diff options
author | froydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-05-11 13:48:55 +0000 |
---|---|---|
committer | froydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-05-11 13:48:55 +0000 |
commit | 8f2eb9e1858f98693c41c75e15c960f449eec8b6 (patch) | |
tree | 9e6dc2ef0a353ee5307b5cc9dd22f5a40e3da76e /gcc/lto-streamer-in.c | |
parent | 8ebd8f29e96a1b18c27d84866b0b28ac0b344dea (diff) | |
download | gcc-8f2eb9e1858f98693c41c75e15c960f449eec8b6.tar.gz |
split tree_type
gcc/ada/
* gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE): Use TYPE_MINVAL.
(TYPE_GCC_MIN_VALUE): Use TYPE_MINVAL.
(TYPE_GCC_MAX_VALUE): Use TYPE_MAXVAL.
gcc/cp/
* cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
TYPE_VALUES_RAW.
(UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
(DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
(TEMPLATE_TYPE_PARM_INDEX): Likewise.
gcc/
* ggc-page.c (extra_order_size_table): Use struct
tree_type_non_common.
* lto-streamer-in.c (unpack_ts_type_value_fields): Rename to...
(unpack_ts_type_common_value_fields): ...this. Update comment.
(unpack_value_fields): Adjust for renaming.
(lto_input_ts_type_tree_pointers): Split into...
(lto_input_ts_type_common_tree_pointer): ...this and...
(lto_input_ts_type_non_common_tree_pointers): ...this.
(lto_input_tree_pointers): Adjust for above split.
* lto-streamer-out.c (pack_ts_type_value_fields): Rename to...
(pack_ts_type_common_value_fields): ...this. Update comment.
(lto_output_ts_type_tree_pointers): Split into...
(lto_output_ts_type_common_tree_pointers): ...this and...
(lto_output_ts_type_non_common_tree_pointers): ...this.
(lto_output_tree_pointers): Adjust for above split.
* lto-streamer.c (check_handled_ts_structures): Mark TS_TYPE_COMMON,
TS_TYPE_WITH_LANG_SPECIFIC, and TS_TYPE_NON_COMMON as handled.
* stor-layout.c (vector_type_mode): Adjust location of mode field.
* tree.h (MARK_TS_TYPE_COMMON, MARK_TS_TYPE_WITH_LANG_SPECIFIC):
Define.
(struct tree_type): Split into...
(struct tree_type_common: ...this and...
(struct tree_type_with_lang_specific): ...this and...
(struct tree_type_non_common): ...this. Adjust accessor macros
accordingly.
(TYPE_VALUES_RAW): Define.
(union tree_node): Update for above changes.
* tree.c (tree_node_structure_for_code) [tcc_type]: Return
TS_TYPE_NON_COMMON.
(initialize_tree_contains_struct) [TS_TYPE]: Use TS_TYPE_COMMON.
Add TS_TYPE_WITH_LANG_SPECIFIC and TS_TYPE_NON_COMMON.
(tree_code_size) [tcc_type]: Use struct tree_type_non_common.
* treestructu.def (TS_TYPE): Remove.
(TS_TYPE_COMMON, TS_TYPE_WITH_LANG_SPECIFIC, TS_TYPE_NON_COMMON):
Define.
gcc/java/
* java-tree.h (TYPE_ARGUMENT_SIGNATURE): Use TYPE_MINVAL.
gcc/lto/
* lto.c (lto_ft_type): Use TYPE_MINVAL and TYPE_MAXVAL. Adjust
location of binfo field.
(lto_fixup_prevailing_decls): Likewise.
gcc/objc/
* objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Use proper accessors.
(CLASS_NST_METHODS, CLASS_CLS_METHODS): Likewise.
(PROTOCOL_NAME, PROTOCOL_NST_METHODS, PROTOCOL_CLS_METHODS): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173658 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-streamer-in.c')
-rw-r--r-- | gcc/lto-streamer-in.c | 60 |
1 files changed, 37 insertions, 23 deletions
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index 4070299f46c..d3a9dd2235b 100644 --- a/gcc/lto-streamer-in.c +++ b/gcc/lto-streamer-in.c @@ -1745,11 +1745,11 @@ unpack_ts_function_decl_value_fields (struct bitpack_d *bp, tree expr) } -/* Unpack all the non-pointer fields of the TS_TYPE structure +/* Unpack all the non-pointer fields of the TS_TYPE_COMMON structure of expression EXPR from bitpack BP. */ static void -unpack_ts_type_value_fields (struct bitpack_d *bp, tree expr) +unpack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr) { enum machine_mode mode; @@ -1821,8 +1821,8 @@ unpack_value_fields (struct bitpack_d *bp, tree expr) if (CODE_CONTAINS_STRUCT (code, TS_FUNCTION_DECL)) unpack_ts_function_decl_value_fields (bp, expr); - if (CODE_CONTAINS_STRUCT (code, TS_TYPE)) - unpack_ts_type_value_fields (bp, expr); + if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON)) + unpack_ts_type_common_value_fields (bp, expr); if (CODE_CONTAINS_STRUCT (code, TS_BLOCK)) unpack_ts_block_value_fields (bp, expr); @@ -2099,13 +2099,37 @@ lto_input_ts_function_decl_tree_pointers (struct lto_input_block *ib, } -/* Read all pointer fields in the TS_TYPE structure of EXPR from input - block IB. DATA_IN contains tables and descriptors for the +/* Read all pointer fields in the TS_TYPE_COMMON structure of EXPR from + input block IB. DATA_IN contains tables and descriptors for the file + being read. */ + +static void +lto_input_ts_type_common_tree_pointers (struct lto_input_block *ib, + struct data_in *data_in, tree expr) +{ + TYPE_SIZE (expr) = lto_input_tree (ib, data_in); + TYPE_SIZE_UNIT (expr) = lto_input_tree (ib, data_in); + TYPE_ATTRIBUTES (expr) = lto_input_tree (ib, data_in); + TYPE_NAME (expr) = lto_input_tree (ib, data_in); + /* Do not stream TYPE_POINTER_TO or TYPE_REFERENCE_TO. They will be + reconstructed during fixup. */ + /* Do not stream TYPE_NEXT_VARIANT, we reconstruct the variant lists + during fixup. */ + TYPE_MAIN_VARIANT (expr) = lto_input_tree (ib, data_in); + TYPE_CONTEXT (expr) = lto_input_tree (ib, data_in); + /* TYPE_CANONICAL gets re-computed during type merging. */ + TYPE_CANONICAL (expr) = NULL_TREE; + TYPE_STUB_DECL (expr) = lto_input_tree (ib, data_in); +} + +/* Read all pointer fields in the TS_TYPE_NON_COMMON structure of EXPR + from input block IB. DATA_IN contains tables and descriptors for the file being read. */ static void -lto_input_ts_type_tree_pointers (struct lto_input_block *ib, - struct data_in *data_in, tree expr) +lto_input_ts_type_non_common_tree_pointers (struct lto_input_block *ib, + struct data_in *data_in, + tree expr) { if (TREE_CODE (expr) == ENUMERAL_TYPE) TYPE_VALUES (expr) = lto_input_tree (ib, data_in); @@ -2117,24 +2141,11 @@ lto_input_ts_type_tree_pointers (struct lto_input_block *ib, || TREE_CODE (expr) == METHOD_TYPE) TYPE_ARG_TYPES (expr) = lto_input_tree (ib, data_in); - TYPE_SIZE (expr) = lto_input_tree (ib, data_in); - TYPE_SIZE_UNIT (expr) = lto_input_tree (ib, data_in); - TYPE_ATTRIBUTES (expr) = lto_input_tree (ib, data_in); - TYPE_NAME (expr) = lto_input_tree (ib, data_in); - /* Do not stream TYPE_POINTER_TO or TYPE_REFERENCE_TO nor - TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO. */ if (!POINTER_TYPE_P (expr)) TYPE_MINVAL (expr) = lto_input_tree (ib, data_in); TYPE_MAXVAL (expr) = lto_input_tree (ib, data_in); - TYPE_MAIN_VARIANT (expr) = lto_input_tree (ib, data_in); - /* Do not stream TYPE_NEXT_VARIANT, we reconstruct the variant lists - during fixup. */ if (RECORD_OR_UNION_TYPE_P (expr)) TYPE_BINFO (expr) = lto_input_tree (ib, data_in); - TYPE_CONTEXT (expr) = lto_input_tree (ib, data_in); - /* TYPE_CANONICAL gets re-computed during type merging. */ - TYPE_CANONICAL (expr) = NULL_TREE; - TYPE_STUB_DECL (expr) = lto_input_tree (ib, data_in); } @@ -2370,8 +2381,11 @@ lto_input_tree_pointers (struct lto_input_block *ib, struct data_in *data_in, if (CODE_CONTAINS_STRUCT (code, TS_FUNCTION_DECL)) lto_input_ts_function_decl_tree_pointers (ib, data_in, expr); - if (CODE_CONTAINS_STRUCT (code, TS_TYPE)) - lto_input_ts_type_tree_pointers (ib, data_in, expr); + if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON)) + lto_input_ts_type_common_tree_pointers (ib, data_in, expr); + + if (CODE_CONTAINS_STRUCT (code, TS_TYPE_NON_COMMON)) + lto_input_ts_type_non_common_tree_pointers (ib, data_in, expr); if (CODE_CONTAINS_STRUCT (code, TS_LIST)) lto_input_ts_list_tree_pointers (ib, data_in, expr); |