]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/27891 (ICE in tree_split_edge, at tree-cfg.c:3107)
authorZdenek Dvorak <rakdver@gcc.gnu.org>
Thu, 2 Nov 2006 20:57:35 +0000 (20:57 +0000)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Thu, 2 Nov 2006 20:57:35 +0000 (20:57 +0000)
PR tree-optimization/27891
* tree-ssa-loop-ivopts.c (rewrite_use_outer): Do not insert code
on abnormal edge.

* gcc++.dg/tree-ssa/pr27891.c: New test.

From-SVN: r118430

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr27891.C [new file with mode: 0644]
gcc/tree-ssa-loop-ivopts.c

index aa52c7e21eaa18005c93e4bf95ec090b95aee106..03c2336345d4bc375cc96f8de5fe62a253549cae 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-02  Zdenek Dvorak <dvorakz@suse.cz>
+
+       PR tree-optimization/27891
+       * tree-ssa-loop-ivopts.c (rewrite_use_outer): Do not insert code
+       on abnormal edge.
+
 2006-11-02  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
        * doc/install.texi (sparc-sun-solaris2*): Update GMP/MPFR build
@@ -25,7 +31,7 @@
 2006-10-26  Paolo Bonzini  <bonzini@gnu.org>
 
        PR c/29092
-        * c-typeck.c (digest_init): Always allow initializing vectors
+       * c-typeck.c (digest_init): Always allow initializing vectors
        that have static storage duration with compound literals.
        * tree.c (build_type_attribute_qual_variant): New, based on
        build_type_attribute_variant.
index 6c6022608671f3ed3a2d8c66765e16c3cce0d228..4f891090b112aa2ffaf4e083db051b3e404c8144 100644 (file)
@@ -1,3 +1,7 @@
+2006-11-02  Zdenek Dvorak <dvorakz@suse.cz>
+
+       * gcc++.dg/tree-ssa/pr27891.c: New test.
+
 2006-11-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.dg/torture/builtin-attr-1.c: Don't test gamma/lgamma.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27891.C b/gcc/testsuite/g++.dg/tree-ssa/pr27891.C
new file mode 100644 (file)
index 0000000..aec9322
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int firstkey();
+void DBM_error(int);
+
+void domisc() {
+    int i = 0;
+    try {
+       try {
+           firstkey();
+           while (1) {
+               i++;
+               firstkey();
+           }
+       } catch (int) {
+           ;
+       }
+       DBM_error(i);
+    } catch (int) {
+       ;
+    }
+}
index f10b98cd9867b19c3b1c6d6f7aa2dd8e877d4212..b3b28c82e637cdc5577236ac8c342ab9ce864f7c 100644 (file)
@@ -5075,7 +5075,7 @@ rewrite_use_outer (struct ivopts_data *data,
 
   exit = single_dom_exit (data->current_loop);
 
-  if (exit)
+  if (exit && !(exit->flags & EDGE_COMPLEX))
     {
       if (!cand->iv)
        {