aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraphclones.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2013-06-27 15:49:28 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2013-06-27 15:49:28 +0200
commit79ee9826b3d11323eb5b2e6b2dfc892fefeeb2b7 (patch)
treec4683ccba1c2ba8180759aa2dbf98cf9ef9d90d3 /gcc/cgraphclones.c
parente18b4a817c072f787e1a7c1c971f90752cb16e9f (diff)
downloadgcc-79ee9826b3d11323eb5b2e6b2dfc892fefeeb2b7.zip
gcc-79ee9826b3d11323eb5b2e6b2dfc892fefeeb2b7.tar.gz
gcc-79ee9826b3d11323eb5b2e6b2dfc892fefeeb2b7.tar.bz2
re PR c++/57208 (Latest chromium compilation fails with enabled LTO)
2013-06-27 Martin Jambor <mjambor@suse.cz> PR lto/57208 * ipa-ref.h (ipa_maybe_record_reference): Declare. * ipa-ref.c (ipa_maybe_record_reference): New function. * cgraphclones.c (cgraph_create_virtual_clone): Use it. * ipa-cp.c (create_specialized_node): Record potential references from aggvals. * Makefile.in (ipa-ref.o): Add IPA_REF_H to dependencies. From-SVN: r200468
Diffstat (limited to 'gcc/cgraphclones.c')
-rw-r--r--gcc/cgraphclones.c23
1 files changed, 2 insertions, 21 deletions
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index f2a57fc..5c328b7 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -341,27 +341,8 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node,
|| in_lto_p)
new_node->symbol.unique_name = true;
FOR_EACH_VEC_SAFE_ELT (tree_map, i, map)
- {
- tree var = map->new_tree;
- symtab_node ref_node;
-
- STRIP_NOPS (var);
- if (TREE_CODE (var) != ADDR_EXPR)
- continue;
- var = get_base_var (var);
- if (!var)
- continue;
- if (TREE_CODE (var) != FUNCTION_DECL
- && TREE_CODE (var) != VAR_DECL)
- continue;
-
- /* Record references of the future statement initializing the constant
- argument. */
- ref_node = symtab_get_node (var);
- gcc_checking_assert (ref_node);
- ipa_record_reference ((symtab_node)new_node, (symtab_node)ref_node,
- IPA_REF_ADDR, NULL);
- }
+ ipa_maybe_record_reference ((symtab_node) new_node, map->new_tree,
+ IPA_REF_ADDR, NULL);
if (!args_to_skip)
new_node->clone.combined_args_to_skip = old_node->clone.combined_args_to_skip;
else if (old_node->clone.combined_args_to_skip)