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
This commit is contained in:
Richard Guenther 2008-04-29 16:01:36 +00:00 committed by Richard Biener
parent 1447bf0556
commit ace4eb9013
4 changed files with 35 additions and 1 deletions

View 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

View 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

View File

@ -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

View 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. */