diff options
author | froydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-04-13 03:09:53 +0000 |
---|---|---|
committer | froydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-04-13 03:09:53 +0000 |
commit | 9b88d08d3ad00c838a22d832ff570e96f082f330 (patch) | |
tree | e87a035b675d12c1d257fa48efa286338bd704e1 /gcc/lto | |
parent | f38f6156a2855580296ed47672eca425f3e45f6a (diff) | |
download | gcc-9b88d08d3ad00c838a22d832ff570e96f082f330.tar.gz |
gcc/ada/
* gcc-interface/ada-tree.h (union lang_tree_node): Check for
TS_COMMON before calling TREE_CHAIN.
* gcc-interface/misc.c (gnat_init_ts): New function.
(LANG_HOOKS_INIT_TS): Define.
gcc/
* c-decl.c (union lang_tree_node): Check for TS_COMMON before
calling TREE_CHAIN.
* print-tree.c (print_node): Likewise.
* tree-inline.c (copy_tree_r): Likewise.
* c-lang.c (LANG_HOOKS_INIT_TS): Define.
* lto-streamer-in.c (lto_input_tree_pointers): Check for TS_TYPED
instead of TS_COMMON.
* lto-streamer-out.c (lto_output_tree_pointers): Likewise.
* tree.c (initialize_tree_contains_struct): Handle TS_TYPED.
(copy_node_stat): Zero TREE_CHAIN only if necessary.
(MARK_TS_BASE, MARK_TS_TYPED, MARK_TS_COMMON): Move these...
(MARK_TS_DECL_COMMON, MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL):
...and these...
(MARK_TS_DECL_WITH_VIS, MARK_TS_DECL_NON_COMMON): ...and these...
* tree.h: ...here.
(TREE_CHAIN): Check for a TS_COMMON structure.
(TREE_TYPE): Check for a TS_TYPED structure.
gcc/c-family/
* c-common.h (c_common_init_ts): Declare.
* c-common.c (c_common_init_ts): Define.
gcc/cp/
* cp-lang.c (cp_init_ts): Call cp_common_init_ts. Move
tree_contains_struct initialization to...
* cp-objcp-common.c (cp_common_init_ts): ...here. Use MARK_*
macros.
* cp-objcp-common.h (cp_common_init_ts): Declare.
* cp-tree.h (union lang_tree_node): Check for TS_COMMON before
calling TREE_CHAIN.
gcc/fortran/
* f95-lang.c (union lang_tree_node): Check for TS_COMMON before
calling TREE_CHAIN.
gcc/go/
* go-lang.c (union lang_tree_node): Check for TS_COMMON before
calling TREE_CHAIN.
gcc/java/
* java-tree.h (union lang_tree_node): Check for TS_COMMON before
calling TREE_CHAIN.
gcc/lto/
* lto-tree.h (union lang_tree_node): Check for TS_COMMON before
calling TREE_CHAIN.
* lto.c (lto_fixup_common): Likewise.
gcc/objc/
* objc-lang.c (objc_init_ts): Move code for this function...
* objc-act.c (objc_common_init_ts): ...here. Define.
* objc-act.h (objc_common_init_ts): Declare.
gcc/objcp/
* objcp-lang.c (objcxx_init_ts): Call objc_common_init_ts and
cp_common_init_ts.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@172359 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto')
-rw-r--r-- | gcc/lto/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lto/lto-tree.h | 2 | ||||
-rw-r--r-- | gcc/lto/lto.c | 3 |
3 files changed, 9 insertions, 2 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 56bf3f5b4e1..bc72f2f41be 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2011-04-12 Nathan Froyd <froydnj@codesourcery.com> + + * lto-tree.h (union lang_tree_node): Check for TS_COMMON before + calling TREE_CHAIN. + * lto.c (lto_fixup_common): Likewise. + 2011-04-08 Nathan Froyd <froydnj@codesourcery.com> * lto-lang.c (handle_sentinel_attribute): Don't use TYPE_ARG_TYPES. diff --git a/gcc/lto/lto-tree.h b/gcc/lto/lto-tree.h index d187fe20dd3..847348c7253 100644 --- a/gcc/lto/lto-tree.h +++ b/gcc/lto/lto-tree.h @@ -48,7 +48,7 @@ enum lto_tree_node_structure_enum { }; union GTY((desc ("lto_tree_node_structure (&%h)"), - chain_next ("(union lang_tree_node *)TREE_CHAIN (&%h.generic)"))) + chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN (&%h.generic)) : NULL"))) lang_tree_node { union tree_node GTY ((tag ("TS_LTO_GENERIC"), diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 45bdb703427..eebc50f1553 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1618,7 +1618,8 @@ lto_fixup_common (tree t, void *data) /* This is not very efficient because we cannot do tail-recursion with a long chain of trees. */ - LTO_FIXUP_SUBTREE (TREE_CHAIN (t)); + if (CODE_CONTAINS_STRUCT (TREE_CODE (t), TS_COMMON)) + LTO_FIXUP_SUBTREE (TREE_CHAIN (t)); } /* Fix up fields of a decl_minimal T. DATA points to fix-up states. */ |