aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-04-29 16:01:36 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-04-29 16:01:36 +0000
commitace4eb901316af20584b2273c6ca2056b779ef7a (patch)
tree6c5fe4a3772a4fe5b65de1e9a97f5516ae540a3d
parent1447bf0556ad0cb300aabd1b883fedee314b6fca (diff)
downloadgcc-ace4eb901316af20584b2273c6ca2056b779ef7a.zip
gcc-ace4eb901316af20584b2273c6ca2056b779ef7a.tar.gz
gcc-ace4eb901316af20584b2273c6ca2056b779ef7a.tar.bz2
re PR tree-optimization/36078 (gfortran fails to build cpu2006/465.tonto)
2008-04-29 Richard Guenther <rguenther@suse.de> PR tree-optimization/36078 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Update virtual SSA form after cleaning up the CFG. * gfortran.fortran-torture/compile/pr36078.f90: New testcase. From-SVN: r134799
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f9022
-rw-r--r--gcc/tree-ssa-loop-ivcanon.c3
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b5ae15e..125a29c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2008-04-29 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/36078
+ * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
+ Update virtual SSA form after cleaning up the CFG.
+
+2008-04-29 Richard Guenther <rguenther@suse.de>
+
PR middle-end/15255
* fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dd8b3ae..c12d382 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2008-04-29 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/36078
+ * gfortran.fortran-torture/compile/pr36078.f90: New testcase.
+
+2008-04-29 Richard Guenther <rguenther@suse.de>
+
PR middle-end/15255
* gcc.dg/fold-plusmult.c: New testcase.
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90
new file mode 100644
index 0000000..b7f0aa3
--- /dev/null
+++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90
@@ -0,0 +1,22 @@
+ subroutine foo(func,p,eval)
+ real(kind=kind(1.0d0)), dimension(3,0:4,0:4,0:4) :: p
+ logical(kind=kind(.true.)), dimension(5,5,5) :: eval
+ interface
+ subroutine func(values,pt)
+ real(kind=kind(1.0d0)), dimension(:), intent(out) :: values
+ real(kind=kind(1.0d0)), dimension(:,:), intent(in) :: pt
+ end subroutine
+ end interface
+ real(kind=kind(1.0d0)), dimension(125,3) :: pt
+ integer(kind=kind(1)) :: n_pt
+
+ n_pt = 1
+ pt(1:n_pt,:) = &
+ reshape( &
+ pack( &
+ transpose(reshape(p,(/3,125/))), &
+ spread(reshape(eval,(/125/)),dim=2,ncopies=3)), &
+ (/n_pt,3/))
+
+ end subroutine
+ end
diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c
index 1472b0d..67af0b3 100644
--- a/gcc/tree-ssa-loop-ivcanon.c
+++ b/gcc/tree-ssa-loop-ivcanon.c
@@ -366,7 +366,8 @@ tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer)
/* This will take care of removing completely unrolled loops
from the loop structures so we can continue unrolling now
innermost loops. */
- cleanup_tree_cfg ();
+ if (cleanup_tree_cfg ())
+ update_ssa (TODO_update_ssa_only_virtuals);
/* Clean up the information about numbers of iterations, since
complete unrolling might have invalidated it. */