diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.fortran-torture/compile/pr36078.f90 | 22 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-ivcanon.c | 3 |
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. */ |