From: Zdenek Dvorak Date: Thu, 2 Nov 2006 20:57:35 +0000 (+0000) Subject: re PR target/27891 (ICE in tree_split_edge, at tree-cfg.c:3107) X-Git-Tag: releases/gcc-4.0.4~234 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a17069f71f8eac6f1065325166236301b923eb4;p=thirdparty%2Fgcc.git re PR target/27891 (ICE in tree_split_edge, at tree-cfg.c:3107) 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aa52c7e21eaa..03c2336345d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-11-02 Zdenek Dvorak + + PR tree-optimization/27891 + * tree-ssa-loop-ivopts.c (rewrite_use_outer): Do not insert code + on abnormal edge. + 2006-11-02 Eric Botcazou * doc/install.texi (sparc-sun-solaris2*): Update GMP/MPFR build @@ -25,7 +31,7 @@ 2006-10-26 Paolo Bonzini 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. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6c6022608671..4f891090b112 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2006-11-02 Zdenek Dvorak + + * gcc++.dg/tree-ssa/pr27891.c: New test. + 2006-11-01 Kaveh R. Ghazi * 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 index 000000000000..aec93222b31c --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr27891.C @@ -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) { + ; + } +} diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index f10b98cd9867..b3b28c82e637 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -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) {