diff options
author | Jakub Jelinek <jakub@redhat.com> | 2006-10-06 09:27:28 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2006-10-06 09:27:28 +0200 |
commit | 9731a71c571699e497274dc343cbbfb43ea5b213 (patch) | |
tree | 0811968585b6f7322894c75019090cce932c2db8 /gcc | |
parent | c1a46941d41c8f3de4b9eb2f4bb95eaa99fb7146 (diff) | |
download | gcc-9731a71c571699e497274dc343cbbfb43ea5b213.zip gcc-9731a71c571699e497274dc343cbbfb43ea5b213.tar.gz gcc-9731a71c571699e497274dc343cbbfb43ea5b213.tar.bz2 |
re PR tree-optimization/29290 (SPEC CPU2000 178.galgel ICE using -O3 -ftree-loop-linear)
PR tree-optimization/29290
* tree-loop-linear.c (linear_transform_loops): Bail if loop_nest has
multiple exits.
* gfortran.dg/loop_nest_1.f90: New test.
From-SVN: r117484
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/loop_nest_1.f90 | 9 | ||||
-rw-r--r-- | gcc/tree-loop-linear.c | 4 |
4 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59bafde..ace6a48 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2006-10-06 Jakub Jelinek <jakub@redhat.com> + PR tree-optimization/29290 + * tree-loop-linear.c (linear_transform_loops): Bail if loop_nest has + multiple exits. + PR target/29198 * config/i386/i386.c (legitimize_pic_address): Reject TLS symbols. * config/i386/predicates.md (local_symbolic_operand): Likewise. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5027cb4..4754970 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2006-10-06 Jakub Jelinek <jakub@redhat.com> + PR tree-optimization/29290 + * gfortran.dg/loop_nest_1.f90: New test. + PR target/29198 * gcc.dg/tls/opt-12.c: New test. diff --git a/gcc/testsuite/gfortran.dg/loop_nest_1.f90 b/gcc/testsuite/gfortran.dg/loop_nest_1.f90 new file mode 100644 index 0000000..8968d88 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/loop_nest_1.f90 @@ -0,0 +1,9 @@ +! PR tree-optimization/29290 +! { dg-do compile } +! { dg-options "-O3 -ftree-loop-linear" } + +subroutine pr29290 (a, b, c, d) + integer c, d + real*8 a(c,c), b(c,c) + a(1:d,1:d) = b(1:d,1:d) +end diff --git a/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c index e0f5bd2..2ef7eac 100644 --- a/gcc/tree-loop-linear.c +++ b/gcc/tree-loop-linear.c @@ -265,12 +265,12 @@ linear_transform_loops (struct loops *loops) { ... } - for (j = 0; j < 50; j++) + for (j = 0; j < 50; j++) { ... } } */ - if (!loop_nest || !loop_nest->inner) + if (!loop_nest || !loop_nest->inner || !loop_nest->single_exit) continue; VEC_truncate (tree, oldivs, 0); VEC_truncate (tree, invariants, 0); |