diff options
author | Martin Jambor <mjambor@suse.cz> | 2013-06-27 15:49:28 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2013-06-27 15:49:28 +0200 |
commit | 79ee9826b3d11323eb5b2e6b2dfc892fefeeb2b7 (patch) | |
tree | c4683ccba1c2ba8180759aa2dbf98cf9ef9d90d3 /gcc/cgraphclones.c | |
parent | e18b4a817c072f787e1a7c1c971f90752cb16e9f (diff) | |
download | gcc-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.c | 23 |
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) |