re PR tree-optimization/36078 (gfortran fails to build cpu2006/465.tonto)
authorRichard Guenther <rguenther@suse.de>
Tue, 29 Apr 2008 16:01:36 +0000 (16:01 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 29 Apr 2008 16:01:36 +0000 (16:01 +0000)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90 [new file with mode: 0644]
gcc/tree-ssa-loop-ivcanon.c

index b5ae15e141bc68eaff47cc16878bf6f9f2f4184c..125a29cabee7cf1b77ba56c2c7aebc7036d1d773 100644 (file)
@@ -1,3 +1,9 @@
+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
index dd8b3aee01c2afd8e7acdbe25c2806efc6ac884d..c12d3823cc395c47072d189d55d935c29924e3a7 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90
new file mode 100644 (file)
index 0000000..b7f0aa3
--- /dev/null
@@ -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 
index 1472b0d237d1b3e0bad999483f547b729e62e949..67af0b374d6f7197085146f258ba24d1b5753f11 100644 (file)
@@ -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.  */