Hello,
here is the fix for the regression I have introduced with my assumed
rank bounds patch.
Will test and commit as obvious.
Mikael
2012-08-02 Mikael Morin <[email protected]>
PR fortran/54166
* trans-array.c (set_loop_bounds): Access specinfo using spec_dim.
2012-08-02 Mikael Morin <[email protected]>
PR fortran/54166
* gfortran.dg/array_5.f90: New test.
Index: trans-array.c
===================================================================
--- trans-array.c (révision 190099)
+++ trans-array.c (copie de travail)
@@ -4503,9 +4503,9 @@ set_loop_bounds (gfc_loopinfo *loop)
else if (INTEGER_CST_P (info->start[dim])
&& !INTEGER_CST_P (specinfo->start[spec_dim])
&& integer_onep (info->stride[dim])
- == integer_onep (specinfo->stride[dim])
+ == integer_onep (specinfo->stride[spec_dim])
&& INTEGER_CST_P (info->stride[dim])
- == INTEGER_CST_P (specinfo->stride[dim]))
+ == INTEGER_CST_P (specinfo->stride[spec_dim]))
loopspec[n] = ss;
/* We don't work out the upper bound.
else if (INTEGER_CST_P (info->finish[n])
! { dg-do compile }
!
! PR fortran/54166
! There was an ICE while chosing the bounds to scalarize the FAIL line.
!
! Contributed by Koen Poppe <[email protected]>
!
module ds_routines
contains
subroutine dsget(vertic,rstore)
real, dimension(:), intent(in out) :: rstore
real, dimension(:,:), intent(out) :: vertic
integer :: nrvert,point
nrvert = 4
point = 26
vertic(1,1:nrvert) = rstore(point+1:point+nrvert) ! FAIL
end subroutine dsget
end module ds_routines
program ds_routines_program
use ds_routines
print *, "ok"
end program ds_routines_program