diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/allocate_zerosize_3.f')
-rw-r--r-- | gcc/testsuite/gfortran.dg/allocate_zerosize_3.f | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/allocate_zerosize_3.f b/gcc/testsuite/gfortran.dg/allocate_zerosize_3.f new file mode 100644 index 000000000..57f2d75b6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/allocate_zerosize_3.f @@ -0,0 +1,40 @@ +C { dg-do run } +C Test the fix for PR35698, in which the negative size dimension would +C throw out the subsequent bounds. +C +C Contributed by Dick Hendrickson <dick.hendrickson@gmail.com> +C + program try_lf0030 + call LF0030(10) + end + + SUBROUTINE LF0030(nf10) + INTEGER ILA1(7) + INTEGER ILA2(7) + LOGICAL LLA(:,:,:,:,:,:,:) + INTEGER ICA(7) + ALLOCATABLE LLA + + + ALLOCATE (LLA(2:3, 4, 0:5, + $ NF10:1, -2:7, -3:8, + $ -4:9)) + + ILA1 = LBOUND(LLA) + ILA2 = UBOUND(LLA) +C CORRECT FOR THE ZERO DIMENSIONED TERM TO ALLOW AN EASIER VERIFY + ILA1(4) = ILA1(4) - 2 ! 1 - 2 = -1 + ILA2(4) = ILA2(4) + 6 ! 0 + 6 = 6 + + DO J1 = 1,7 + IVAL = 3-J1 + IF (ILA1(J1) .NE. IVAL) call abort () + 100 ENDDO + + DO J1 = 1,7 + IVAL = 2+J1 + IF (ILA2(J1) .NE. IVAL) call abort () + 101 ENDDO + + END SUBROUTINE +
\ No newline at end of file |