Commit ace4eb90 by Richard Guenther Committed by Richard Biener

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
parent 1447bf05
2008-04-29 Richard Guenther <rguenther@suse.de> 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 PR middle-end/15255
* fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C. * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
......
2008-04-29 Richard Guenther <rguenther@suse.de> 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 PR middle-end/15255
* gcc.dg/fold-plusmult.c: New testcase. * gcc.dg/fold-plusmult.c: New testcase.
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
...@@ -366,7 +366,8 @@ tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer) ...@@ -366,7 +366,8 @@ tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer)
/* This will take care of removing completely unrolled loops /* This will take care of removing completely unrolled loops
from the loop structures so we can continue unrolling now from the loop structures so we can continue unrolling now
innermost loops. */ 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 /* Clean up the information about numbers of iterations, since
complete unrolling might have invalidated it. */ complete unrolling might have invalidated it. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment