diff options
author | Martin Jambor <mjambor@suse.cz> | 2012-11-20 12:20:41 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2012-11-20 12:20:41 +0100 |
commit | dffdd6e5b031ed6cc3a32aba17669ea69aa6538c (patch) | |
tree | fba9636433b58f1c588237561e62f137f7e46b03 /gcc | |
parent | e7d8fc6c1069d17cba2e0fb4ab6ec69b50273f08 (diff) | |
download | gcc-dffdd6e5b031ed6cc3a32aba17669ea69aa6538c.zip gcc-dffdd6e5b031ed6cc3a32aba17669ea69aa6538c.tar.gz gcc-dffdd6e5b031ed6cc3a32aba17669ea69aa6538c.tar.bz2 |
re PR tree-optimization/55260 (ICE: in ipa_get_parm_lattices, at ipa-cp.c:263 with -O2 -fno-inline -fipa-cp-clone)
2012-11-20 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/55260
* ipa-cp.c (find_aggregate_values_for_callers_subset): Rename info to
dest_info, use caller_info instead of info when determining whether
callee is a clone.
* testsuite/g++.dg/torture/pr55260-1.C: New test.
From-SVN: r193657
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ipa-cp.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr55260-1.C | 24 |
4 files changed, 40 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92c138f..fc073b3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-11-20 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/55260 + * ipa-cp.c (find_aggregate_values_for_callers_subset): Rename info to + dest_info, use caller_info instead of info when determining whether + callee is a clone. + 2012-11-20 Andrey Turetskiy <andrey.turetskiy@gmail.com> * config/i386/sse.md (*<ssse3_avx2>_pmulhrsw<mode>3): Merge diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 57382b5..a0f5f5f 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -2859,10 +2859,10 @@ static struct ipa_agg_replacement_value * find_aggregate_values_for_callers_subset (struct cgraph_node *node, vec<cgraph_edge_p> callers) { - struct ipa_node_params *info = IPA_NODE_REF (node); + struct ipa_node_params *dest_info = IPA_NODE_REF (node); struct ipa_agg_replacement_value *res = NULL; struct cgraph_edge *cs; - int i, j, count = ipa_get_param_count (info); + int i, j, count = ipa_get_param_count (dest_info); FOR_EACH_VEC_ELT (callers, j, cs) { @@ -2880,7 +2880,7 @@ find_aggregate_values_for_callers_subset (struct cgraph_node *node, /* Among other things, the following check should deal with all by_ref mismatches. */ - if (ipa_get_parm_lattices (info, i)->aggs_bottom) + if (ipa_get_parm_lattices (dest_info, i)->aggs_bottom) continue; FOR_EACH_VEC_ELT (callers, j, cs) @@ -2932,7 +2932,7 @@ find_aggregate_values_for_callers_subset (struct cgraph_node *node, struct ipcp_param_lattices *src_plats; HOST_WIDE_INT delta = ipa_get_jf_ancestor_offset (jfunc); - if (info->ipcp_orig_node) + if (caller_info->ipcp_orig_node) { if (!inter.exists ()) inter = agg_replacements_to_vector (cs->caller, delta); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1a9c010..cb65187 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-20 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/55260 + * g++.dg/torture/pr55260-1.C: New test. + 2012-11-20 Sofiane Naci <sofiane.naci@arm.com> * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: New testcase. diff --git a/gcc/testsuite/g++.dg/torture/pr55260-1.C b/gcc/testsuite/g++.dg/torture/pr55260-1.C new file mode 100644 index 0000000..552da8d --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr55260-1.C @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu++0x -fno-inline" } */ +/* { dg-add-options bind_pic_locally } */ + + struct B + { + constexpr B (): + bp () + {} + ~B () + { + if (bp) + bp->f (); + } + void f (); + B *bp; + }; +struct A { B b; +}; + +void foo () +{ + A a; +} |