diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cgraph.c | 2 | ||||
-rw-r--r-- | gcc/cgraphunit.c | 4 | ||||
-rw-r--r-- | gcc/ipa.c | 4 |
4 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fdfe9c4..c1f7568 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2011-06-13 Jan Hubicka <jh@suse.cz> + * cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY + similarly to DECL_COMDAT. + * cgraphunit.c (cgraph_analyze_function): Likewise. + * ipa.c (function_and_variable_visibility): Likewise. + +2011-06-13 Jan Hubicka <jh@suse.cz> + * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not output BINFO_VIRTUALS when streaming for ltrans unit. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index dfa5439..86e7207 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -2487,7 +2487,7 @@ cgraph_make_decl_local (tree decl) DECL_COMMON (decl) = 0; else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL); - if (DECL_COMDAT (decl)) + if (DECL_ONE_ONLY (decl) || DECL_COMDAT (decl)) { /* It is possible that we are linking against library defining same COMDAT function. To avoid conflict we need to rename our local name of the diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index b01f22b..0e7842c 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -830,9 +830,9 @@ cgraph_analyze_function (struct cgraph_node *node) if (TREE_PUBLIC (node->decl) && node->same_body_alias) { DECL_EXTERNAL (node->decl) = DECL_EXTERNAL (node->thunk.alias); - if (DECL_COMDAT (node->thunk.alias)) + if (DECL_ONE_ONLY (node->thunk.alias)) { - DECL_COMDAT (node->decl) = 1; + DECL_COMDAT (node->decl) = DECL_COMDAT (node->thunk.alias); DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (node->thunk.alias); if (DECL_ONE_ONLY (node->thunk.alias) && !node->same_comdat_group) { @@ -904,9 +904,9 @@ function_and_variable_visibility (bool whole_program) We also need to arrange the thunk into the same comdat group as the function it reffers to. */ - if (DECL_COMDAT (decl_node->decl)) + if (DECL_ONE_ONLY (decl_node->decl)) { - DECL_COMDAT (node->decl) = 1; + DECL_COMDAT (node->decl) = DECL_COMDAT (decl_node->decl); DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (decl_node->decl); if (DECL_ONE_ONLY (decl_node->decl) && !node->same_comdat_group) { |