aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/associate_57.f90
blob: 80c7668417476cbe06cee2336f5e60b0fb25e2f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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