Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-streamer-in.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/tree-streamer-in.c Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/tree-streamer-in.c Thu Oct 25 07:37:49 2018 +0900 @@ -1,6 +1,6 @@ /* Routines for reading trees from a file stream. - Copyright (C) 2011-2017 Free Software Foundation, Inc. + Copyright (C) 2011-2018 Free Software Foundation, Inc. Contributed by Diego Novillo <dnovillo@google.com> This file is part of GCC. @@ -30,7 +30,6 @@ #include "tree-streamer.h" #include "cgraph.h" #include "builtins.h" -#include "ipa-chkp.h" #include "gomp-constants.h" #include "stringpool.h" #include "attribs.h" @@ -251,6 +250,7 @@ { DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1); DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_PADDING_P (expr) = (unsigned) bp_unpack_value (bp, 1); expr->decl_common.off_align = bp_unpack_value (bp, 8); } @@ -381,6 +381,7 @@ TYPE_NONALIASED_COMPONENT (expr) = (unsigned) bp_unpack_value (bp, 1); if (AGGREGATE_TYPE_P (expr)) TYPE_TYPELESS_STORAGE (expr) = (unsigned) bp_unpack_value (bp, 1); + TYPE_EMPTY_P (expr) = (unsigned) bp_unpack_value (bp, 1); TYPE_PRECISION (expr) = bp_unpack_var_len_unsigned (bp); SET_TYPE_ALIGN (expr, bp_unpack_var_len_unsigned (bp)); #ifdef ACCEL_COMPILER @@ -397,7 +398,6 @@ unpack_ts_block_value_fields (struct data_in *data_in, struct bitpack_d *bp, tree expr) { - BLOCK_ABSTRACT (expr) = (unsigned) bp_unpack_value (bp, 1); /* BLOCK_NUMBER is recomputed. */ stream_input_location (&BLOCK_SOURCE_LOCATION (expr), bp, data_in); } @@ -529,14 +529,7 @@ unpack_ts_translation_unit_decl_value_fields (data_in, &bp, expr); if (CODE_CONTAINS_STRUCT (code, TS_OPTIMIZATION)) - cl_optimization_stream_in (&bp, TREE_OPTIMIZATION (expr)); - - if (CODE_CONTAINS_STRUCT (code, TS_BINFO)) - { - unsigned HOST_WIDE_INT length = bp_unpack_var_len_unsigned (&bp); - if (length > 0) - vec_safe_grow (BINFO_BASE_ACCESSES (expr), length); - } + cl_optimization_stream_in (data_in, &bp, TREE_OPTIMIZATION (expr)); if (CODE_CONTAINS_STRUCT (code, TS_CONSTRUCTOR)) { @@ -590,8 +583,10 @@ } else if (CODE_CONTAINS_STRUCT (code, TS_VECTOR)) { - HOST_WIDE_INT len = streamer_read_hwi (ib); - result = make_vector (len); + bitpack_d bp = streamer_read_bitpack (ib); + unsigned int log2_npatterns = bp_unpack_value (&bp, 8); + unsigned int nelts_per_pattern = bp_unpack_value (&bp, 8); + result = make_vector (log2_npatterns, nelts_per_pattern); } else if (CODE_CONTAINS_STRUCT (code, TS_BINFO)) { @@ -648,9 +643,22 @@ lto_input_ts_vector_tree_pointers (struct lto_input_block *ib, struct data_in *data_in, tree expr) { - unsigned i; - for (i = 0; i < VECTOR_CST_NELTS (expr); ++i) - VECTOR_CST_ELT (expr, i) = stream_read_tree (ib, data_in); + unsigned int count = vector_cst_encoded_nelts (expr); + for (unsigned int i = 0; i < count; ++i) + VECTOR_CST_ENCODED_ELT (expr, i) = stream_read_tree (ib, data_in); +} + + +/* Read all pointer fields in the TS_POLY_INT_CST structure of EXPR from + input block IB. DATA_IN contains tables and descriptors for the + file being read. */ + +static void +lto_input_ts_poly_tree_pointers (struct lto_input_block *ib, + struct data_in *data_in, tree expr) +{ + for (unsigned int i = 0; i < NUM_POLY_INT_COEFFS; ++i) + POLY_INT_CST_COEFF (expr, i) = stream_read_tree (ib, data_in); } @@ -697,7 +705,8 @@ && DECL_HAS_VALUE_EXPR_P (expr)) SET_DECL_VALUE_EXPR (expr, stream_read_tree (ib, data_in)); - if (VAR_P (expr)) + if (VAR_P (expr) + && DECL_HAS_DEBUG_EXPR_P (expr)) { tree dexpr = stream_read_tree (ib, data_in); if (dexpr) @@ -711,11 +720,9 @@ file being read. */ static void -lto_input_ts_decl_non_common_tree_pointers (struct lto_input_block *ib, - struct data_in *data_in, tree expr) +lto_input_ts_decl_non_common_tree_pointers (struct lto_input_block *, + struct data_in *, tree) { - if (TREE_CODE (expr) == TYPE_DECL) - DECL_ORIGINAL_TYPE (expr) = stream_read_tree (ib, data_in); } @@ -750,7 +757,6 @@ DECL_BIT_FIELD_TYPE (expr) = stream_read_tree (ib, data_in); DECL_BIT_FIELD_REPRESENTATIVE (expr) = stream_read_tree (ib, data_in); DECL_FIELD_BIT_OFFSET (expr) = stream_read_tree (ib, data_in); - DECL_FCONTEXT (expr) = stream_read_tree (ib, data_in); } @@ -762,7 +768,6 @@ lto_input_ts_function_decl_tree_pointers (struct lto_input_block *ib, struct data_in *data_in, tree expr) { - DECL_VINDEX (expr) = stream_read_tree (ib, data_in); /* DECL_STRUCT_FUNCTION is loaded on demand by cgraph_get_body. */ DECL_FUNCTION_PERSONALITY (expr) = stream_read_tree (ib, data_in); #ifndef ACCEL_COMPILER @@ -813,7 +818,6 @@ TYPE_CONTEXT (expr) = stream_read_tree (ib, data_in); /* TYPE_CANONICAL gets re-computed during type merging. */ TYPE_CANONICAL (expr) = NULL_TREE; - TYPE_STUB_DECL (expr) = stream_read_tree (ib, data_in); } /* Read all pointer fields in the TS_TYPE_NON_COMMON structure of EXPR @@ -910,11 +914,6 @@ BLOCK_VARS (expr) = streamer_read_chain (ib, data_in); BLOCK_SUPERCONTEXT (expr) = stream_read_tree (ib, data_in); - - /* Stream BLOCK_ABSTRACT_ORIGIN and BLOCK_SOURCE_LOCATION for - the limited cases we can handle - those that represent inlined - function scopes. For the rest them on the floor instead of ICEing in - dwarf2out.c. */ BLOCK_ABSTRACT_ORIGIN (expr) = stream_read_tree (ib, data_in); /* Do not stream BLOCK_NONLOCALIZED_VARS. We cannot handle debug information for early inlined BLOCKs so drop it on the floor instead of ICEing in @@ -952,7 +951,6 @@ lto_input_ts_binfo_tree_pointers (struct lto_input_block *ib, struct data_in *data_in, tree expr) { - unsigned i; tree t; /* Note that the number of slots in EXPR was read in @@ -970,17 +968,10 @@ BINFO_OFFSET (expr) = stream_read_tree (ib, data_in); BINFO_VTABLE (expr) = stream_read_tree (ib, data_in); - BINFO_VPTR_FIELD (expr) = stream_read_tree (ib, data_in); - /* The vector of BINFO_BASE_ACCESSES is pre-allocated during - unpacking the bitfield section. */ - for (i = 0; i < vec_safe_length (BINFO_BASE_ACCESSES (expr)); i++) - { - tree a = stream_read_tree (ib, data_in); - (*BINFO_BASE_ACCESSES (expr))[i] = a; - } - /* Do not walk BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX - and BINFO_VPTR_INDEX; these are used by C++ FE only. */ + /* Do not walk BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX, + BINFO_BASE_ACCESSES and BINFO_VPTR_INDEX; these are used by C++ FE + only. */ } @@ -1037,6 +1028,9 @@ if (CODE_CONTAINS_STRUCT (code, TS_VECTOR)) lto_input_ts_vector_tree_pointers (ib, data_in, expr); + if (CODE_CONTAINS_STRUCT (code, TS_POLY_INT_CST)) + lto_input_ts_poly_tree_pointers (ib, data_in, expr); + if (CODE_CONTAINS_STRUCT (code, TS_COMPLEX)) lto_input_ts_complex_tree_pointers (ib, data_in, expr);