aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2021-01-25 20:27:15 +0100
committerThomas Koenig <tkoenig@gcc.gnu.org>2021-01-25 20:27:15 +0100
commit7d54cccad332074d5fb81123796239f0f61b11a7 (patch)
tree40daf5ef2896041e19ca9a27ce3821ec78d92214 /gcc
parenta43e0dfb63ffb63e400b69acac6dd614b203d4fe (diff)
downloadgcc-7d54cccad332074d5fb81123796239f0f61b11a7.zip
gcc-7d54cccad332074d5fb81123796239f0f61b11a7.tar.gz
gcc-7d54cccad332074d5fb81123796239f0f61b11a7.tar.bz2
Commit test case for PR 96386.
gcc/testsuite/ChangeLog: * gfortran.dg/associate_57.f90: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gfortran.dg/associate_57.f9047
1 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/associate_57.f90 b/gcc/testsuite/gfortran.dg/associate_57.f90
new file mode 100644
index 0000000..80c7668
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_57.f90
@@ -0,0 +1,47 @@
+! { dg-do compile }
+! PR 96386 - this used to cause an ICE.
+! Test case by Menno Deij - van Rijswijk.
+
+MODULE assoc
+
+TYPE Level3
+ INTEGER :: someNumber
+END TYPE Level3
+
+TYPE Level2
+ INTEGER :: nLevel3
+ TYPE (Level3), ALLOCATABLE :: levels3(:)
+
+END TYPE Level2
+
+TYPE Level1
+ INTEGER :: nLevel2
+ TYPE (Level2), ALLOCATABLE :: levels2(:)
+END TYPE Level1
+
+TYPE outer_type
+ INTEGER :: nLevel1
+ TYPE (Level1), ALLOCATABLE :: levels1(:)
+END TYPE outer_type
+
+TYPE(outer_type), TARGET :: outer
+
+CONTAINS
+
+SUBROUTINE internal_compiler_error_repro()
+
+INTEGER F,B,Z
+
+ASSOCIATE(l1 => outer%levels1 ) ! <-- this gives an ICE
+!ASSOCIATE(l1 => outer%levels1(:) ) ! <-- No ICE if array spec is added
+ DO F=1,outer%nLevel1
+ ASSOCIATE(l2 => l1(F)%levels2 )
+ DO B=1,l2(F)%nLevel3 ! <-- condition for ICE to be triggered
+
+ END DO
+ END ASSOCIATE
+ END DO
+END ASSOCIATE
+
+END SUBROUTINE internal_compiler_error_repro
+end module