re PR tree-optimization/50058 (FAIL: g++.dg/tree-ssa/pr41186.C)

2011-08-15  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/50058
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Relax aggregate
	copy matching.

From-SVN: r177760
This commit is contained in:
Richard Guenther 2011-08-15 12:17:33 +00:00 committed by Richard Biener
parent 3598da8066
commit 4f9dbaaae8
2 changed files with 10 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2011-08-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/50058
* tree-ssa-sccvn.c (vn_reference_lookup_3): Relax aggregate
copy matching.
2011-08-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
PR target/50022

View File

@ -1485,12 +1485,11 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_)
may fail when comparing types for compatibility. But we really
don't care here - further lookups with the rewritten operands
will simply fail if we messed up types too badly. */
if (j == 0 && i == 0
if (j == 0 && i >= 0
&& VEC_index (vn_reference_op_s, lhs_ops, 0)->opcode == MEM_REF
&& VEC_index (vn_reference_op_s, vr->operands, i)->opcode == MEM_REF
&& tree_int_cst_equal
(VEC_index (vn_reference_op_s, lhs_ops, 0)->op0,
VEC_index (vn_reference_op_s, vr->operands, i)->op0))
&& VEC_index (vn_reference_op_s, lhs_ops, 0)->off != -1
&& (VEC_index (vn_reference_op_s, lhs_ops, 0)->off
== VEC_index (vn_reference_op_s, vr->operands, i)->off))
i--, j--;
/* i now points to the first additional op.