+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.
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,
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
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>
--- /dev/null
+/* { 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;}
+ }
+}
+
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. */