Commit bf8dbe38 by Zdenek Dvorak

re PR tree-optimization/29902 (ICE in coalesce_abnormal_edges, at tree-outof-ssa.c:644)

	PR tree-optimization/29902
	* tree-ssa-loop-manip.c (can_unroll_loop_p): Return false if
	any involved ssa name appears in abnormal phi node.

	* g++.dg/tree-ssa/pr29902.C: New test.

From-SVN: r119074
parent da2a24c3
2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/29902
* tree-ssa-loop-manip.c (can_unroll_loop_p): Return false if
any involved ssa name appears in abnormal phi node.
2006-11-21 Bob Wilson <bob.wilson@acm.org>
* config/xtensa/xtensa.c (xtensa_char_to_class): Delete.
......@@ -19,7 +25,7 @@
2006-11-21 Janis Johnson <janis187@us.ibm.com>
* config/dfp-bits.c (DFP_TO_INT): Remove code to saturate result
of conversion that doesn't fit.
of conversion that doesn't fit.
* config/dfp-bit.h (CONTEXT_TRAPS, CONTEXT_ERRORS, DFP_RAISE): Delete.
* config/dfp-bit.c (dfp_unary_op, dfp_binary_op, dfp_compare_op,
......@@ -29,7 +35,7 @@
2006-11-21 Douglas Gregor <doug.gregor@gmail.com>
* c-common.h (enum rid): Add RID_STATIC_ASSERT.
* c-common.h (enum rid): Add RID_STATIC_ASSERT.
2006-11-21 Richard Guenther <rguenther@suse.de>
......
2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/29902
* g++.dg/tree-ssa/pr29902.C: New test.
2006-11-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29820
......@@ -9,9 +14,9 @@
2006-11-21 Douglas Gregor <doug.gregor@gmail.com>
* g++.dg/cpp0x/static_assert1.C: New.
* g++.dg/cpp0x/static_assert2.C: New.
* g++.dg/cpp0x/static_assert3.C: New.
* g++.dg/cpp0x/static_assert1.C: New.
* g++.dg/cpp0x/static_assert2.C: New.
* g++.dg/cpp0x/static_assert3.C: New.
2006-11-21 Richard Guenther <rguenther@suse.de>
/* { dg-do compile { target i?86-*-* } } */
/* { dg-options "-O1 -fprefetch-loop-arrays -march=athlon" } */
int length1();
int g(int);
void f(int capacity_, char *old_storage)
{
try {
length1();
int old_capacity = capacity_;
capacity_ *= 2;
g(capacity_);
for (int i = 1; i < old_capacity; i++)
old_storage[i] = old_storage[i - 1];
} catch (...) {
for (int i = 1; i < capacity_; i++){old_storage[i] = 0;}
}
}
......@@ -625,7 +625,16 @@ can_unroll_loop_p (struct loop *loop, unsigned factor,
return false;
if (!number_of_iterations_exit (loop, exit, niter, false)
|| niter->cmp == ERROR_MARK)
|| niter->cmp == ERROR_MARK
/* Scalar evolutions analysis might have copy propagated
the abnormal ssa names into these expressions, hence
emiting the computations based on them during loop
unrolling might create overlapping life ranges for
them, and failures in out-of-ssa. */
|| contains_abnormal_ssa_name_p (niter->may_be_zero)
|| contains_abnormal_ssa_name_p (niter->control.base)
|| contains_abnormal_ssa_name_p (niter->control.step)
|| contains_abnormal_ssa_name_p (niter->bound))
return false;
/* And of course, we must be able to duplicate the loop. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment