diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/pr71883.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr71883.f90 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/pr71883.f90 b/gcc/testsuite/gfortran.dg/pr71883.f90 new file mode 100644 index 0000000000..23ed6a680b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr71883.f90 @@ -0,0 +1,38 @@ +! { dg-do compile } +! +! Test the fix for pr71883, in which an ICE would follow the error. +! +! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de> +! +program p + character(3), allocatable :: z(:,:) + z(1:2,1:2) = 'abc' + z(2,1) = z(12) ! { dg-error "Rank mismatch in array reference" } + z(21) = z(1,2) ! { dg-error "Rank mismatch in array reference" } +contains + subroutine a + character(3), allocatable :: z(:,:) + z(1:2,1:2) = 'abc' + z(2,1) = z(-1) ! { dg-error "Rank mismatch in array reference" } + z(2,1) = z(99) ! { dg-error "Rank mismatch in array reference" } + z(2,1) = z(huge(0)) ! { dg-error "Rank mismatch in array reference" } + z(2,1) = z(-huge(0)) ! { dg-error "Rank mismatch in array reference" } + z(-1) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + z(99) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + z(huge(0)) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + z(-huge(0)) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + end subroutine + + subroutine b + character(:), allocatable :: z(:,:) + z(1:2,1:2) = 'abc' + z(2,1) = z(-1) ! { dg-error "Rank mismatch in array reference" } + z(2,1) = z(99) ! { dg-error "Rank mismatch in array reference" } + z(2,1) = z(huge(0)) ! { dg-error "Rank mismatch in array reference" } + z(2,1) = z(-huge(0)) ! { dg-error "Rank mismatch in array reference" } + z(-1) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + z(99) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + z(huge(0)) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + z(-huge(0)) = z(2,1) ! { dg-error "Rank mismatch in array reference" } + end subroutine +end |