aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-cp.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/ipa-cp.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/ipa-cp.c')
-rw-r--r--gcc/ipa-cp.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 9c29d1d..05c6e74 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -2663,6 +2663,7 @@ create_specialized_node (struct cgraph_node *node,
{
struct ipa_node_params *new_info, *info = IPA_NODE_REF (node);
vec<ipa_replace_map_p, va_gc> *replace_trees = NULL;
+ struct ipa_agg_replacement_value *av;
struct cgraph_node *new_node;
int i, count = ipa_get_param_count (info);
bitmap args_to_skip;
@@ -2704,6 +2705,10 @@ create_specialized_node (struct cgraph_node *node,
new_node = cgraph_create_virtual_clone (node, callers, replace_trees,
args_to_skip, "constprop");
ipa_set_node_agg_value_chain (new_node, aggvals);
+ for (av = aggvals; av; av = av->next)
+ ipa_maybe_record_reference ((symtab_node) new_node, av->value,
+ IPA_REF_ADDR, NULL);
+
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, " the new node is %s/%i.\n",