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
This commit is contained in:
parent
da2a24c3f6
commit
bf8dbe3863
|
@ -1,3 +1,9 @@
|
|||
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>
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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>
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/* { 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. */
|
||||
|
|
Loading…
Reference in New Issue