[Bug fortran/35820] New: internal compiler error with forall
dick dot hendrickson at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Apr 3 18:41:00 GMT 2008
The following program causes an internal compiler error.
Each of the three subroutines causes an ICE. The ICE moves
around or goes away when I try to simplify the test much
more.
! fails on Windows XP
! gcc version 4.4.0 20080312 (experimental) [trunk revision 133139]
Dick Hendrickson
MODULE TESTS
IMPLICIT CHARACTER(LEN=9) (B)
IMPLICIT CHARACTER(LEN=1) (C)
IMPLICIT CHARACTER(LEN=9) (E)
IMPLICIT CHARACTER(LEN=1) (F)
IMPLICIT REAL(KIND=4) (R)
IMPLICIT REAL(KIND=8) (D)
IMPLICIT INTEGER (I)
IMPLICIT INTEGER (H)
IMPLICIT LOGICAL (L)
IMPLICIT LOGICAL (G)
IMPLICIT COMPLEX(KIND=4) (Z)
IMPLICIT COMPLEX(KIND=8) (Y)
IMPLICIT CHARACTER (A,J,K,M,N,O,P,S,T,U,V,W)
INTEGER,PARAMETER,PUBLIC :: NF_KV = KIND(1)
INTEGER,PARAMETER,PUBLIC :: I1_KV = KIND(1)
INTEGER,PARAMETER,PUBLIC :: I2_KV = I1_KV
INTEGER,PARAMETER,PUBLIC :: R1_KV = KIND(1.0)
INTEGER,PARAMETER,PUBLIC :: R2_KV = KIND(1.0D0)
INTEGER,PARAMETER,PUBLIC :: L1_KV = KIND(.TRUE.)
INTEGER,PARAMETER,PUBLIC :: L2_KV = L1_KV
INTEGER,PARAMETER,PUBLIC :: C1_KV = KIND('A')
INTEGER,PARAMETER,PUBLIC :: C2_KV = C1_KV
INTEGER, PARAMETER, PUBLIC :: NPBIG=1000
INTEGER, PARAMETER, PUBLIC :: NPSIZE = 5
INTEGER, PARAMETER, PUBLIC :: NPBIGM = NPBIG-1
INTEGER, PUBLIC, PARAMETER ::
$ NP0 = 0,
$ NP1 = 1,
$ NP2 = 2,
$ NP3 = 3,
$ NP4 = 4,
$ NP5 = 5,
$ MP1 = -1,
$ MP2 = -2,
$ MP3 = -3,
$ MP4 = -4,
$ MP5 = -5
INTEGER, SAVE :: NF0,NF1,NF2,NF3,NF4,NF5,
$ NF6,NF7,NF8,NF9,NF10,
$ NFBIGM,NFBIG,
$ MF1,MF2,MF3,MF4,MF5,
$ MF6,MF7,MF8,MF9,MF10,
$ MFBIGM,MFBIG
CHARACTER, PRIVATE :: I,J,K,L,M,N
INTEGER, PRIVATE :: J1,J2,J3,J4,J5,J6,J7,JJJ
INTEGER, PRIVATE :: ISTAT
INTEGER(NF_KV), PRIVATE, PARAMETER ::
$ NP6=6, NP7=7, NP8=8, NP9=9, NP10=10,
$ MP6=-6, MP7=-7, MP8=-8, MP9=-9, MP10=-10
CONTAINS
SUBROUTINE SA0136(RDA,IDA,BDA)
REAL(R1_KV) RDA(10)
INTEGER(I1_KV) IDA(10,9)
CHARACTER(9,C1_KV) BDA(10,9,5)
INTEGER(I1_KV) ICA(10,9)
COMMON /IF/ IF(NPBIG*NPSIZE)
EQUIVALENCE (ICA,IF(1))
REAL(R1_KV) RCA(10)
COMMON /RF/ RF(NPBIG*NPSIZE)
EQUIVALENCE (RCA,RF(1))
CHARACTER(9,C1_KV) BCA(10,9,5)
COMMON /BF/ BF(NPBIG*NPSIZE)
EQUIVALENCE (BCA,BF(1))
! I N I T I A L I Z A T I O N S E C T I O N
RDA = RCA
IDA = ICA
BDA = BCA
! T E S T S T A T E M E N T S
FORALL (J1 = 1:10)
RDA(J1) = RCA(J1) + 1.0_R1_KV
FORALL (J2 = 1:9)
FORALL (J3 = 1:5)
BDA(J1,J2,J3) = "X"//BCA(J1,J2,J3)
END FORALL
IDA(J1,J2) = ICA(J1,J2) + 1
END FORALL
ENDFORALL
END SUBROUTINE
SUBROUTINE SA0137(RDA,YDA,BDA,IDA,NDS10,NDS9)
INTEGER(NF_KV) :: NDS10
INTEGER(NF_KV) :: NDS9
REAL(R1_KV) RDA(NF10)
COMPLEX(R2_KV) YDA(NDS10,NF9)
CHARACTER(9,C1_KV) BDA(NF10,NDS9,NF5)
INTEGER(I1_KV) IDA(NF10)
COMPLEX(R2_KV) YCA(10,9)
COMMON /YF/ YF(NPBIG*NPSIZE)
EQUIVALENCE (YCA,YF(1))
REAL(R1_KV) RCA(10)
COMMON /RF/ RF(NPBIG*NPSIZE)
EQUIVALENCE (RCA,RF(1))
INTEGER(I1_KV) ICA(10)
COMMON /IF/ IF(NPBIG*NPSIZE)
EQUIVALENCE (ICA,IF(1))
CHARACTER(9,C1_KV) BCA(10,9,5)
COMMON /BF/ BF(NPBIG*NPSIZE)
EQUIVALENCE (BCA,BF(1))
! I N I T I A L I Z A T I O N S E C T I O N
RDA(1:10) = RCA
YDA(1:10,1:9) = YCA
BDA(1:10,1:9,1:5) = BCA
IDA(1:10) = ICA
! T E S T S T A T E M E N T S
FORALL (J1 = NF1:NF10)
RDA(J1) = RCA(J1) + 1.0_R1_KV
FORALL (J2 = NF1:NF9)
FORALL (J3 = NF1:NF5)
BDA(J1,J2,J3) = "X"//BCA(J1,J2,J3)
END FORALL
YDA(J1,J2) = YCA(J1,J2) + 1
END FORALL
IDA(J1) = ICA(J1) + 1
ENDFORALL
END SUBROUTINE
SUBROUTINE SA0138(RDA,YDA,BDA,IDA,NDS10,NDS9)
INTEGER(NF_KV) :: NDS10
INTEGER(NF_KV) :: NDS9
REAL(R1_KV) RDA(NF10)
COMPLEX(R2_KV) YDA(NDS10,NF9)
CHARACTER(9,C1_KV) BDA(NF10,NDS9,NF5)
INTEGER(I1_KV) IDA(NF10)
COMPLEX(R2_KV) YCA(10,9)
COMMON /YF/ YF(NPBIG*NPSIZE)
EQUIVALENCE (YCA,YF(1))
REAL(R1_KV) RCA(10)
COMMON /RF/ RF(NPBIG*NPSIZE)
EQUIVALENCE (RCA,RF(1))
CHARACTER(9,C1_KV) BCA(10,9,5)
COMMON /BF/ BF(NPBIG*NPSIZE)
EQUIVALENCE (BCA,BF(1))
INTEGER(I1_KV) ICA(10)
COMMON /IF/ IF(NPBIG*NPSIZE)
EQUIVALENCE (ICA,IF(1))
! I N I T I A L I Z A T I O N S E C T I O N
RDA(1:10) = RCA
YDA(1:10,1:9) = YCA
BDA(1:10,1:9,1:5) = BCA
IDA(1:10) = ICA
J1 = 6
J2 = 7
J3 = 8
! T E S T S T A T E M E N T S
FORALL (J1 = NF1:NF10)
RDA(J1) = RDA(J1) + 1.0_R1_KV
IDA(J1) = IDA(J1) + 1
FORALL (J2 = NF1:NF9)
FORALL (J3 = NF1:NF5) BDA(J1,J2,J3) = "X"//BDA(J1,J2,J3)
YDA(J1,J2) = YDA(J1,J2) + 1
END FORALL
IDA(J1) = IDA(J1) + 1
ENDFORALL
END SUBROUTINE
END MODULE TESTS
gfortran%gfortran sa0136.f
f951.exe: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
--
Summary: internal compiler error with forall
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dick dot hendrickson at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35820
More information about the Gcc-bugs
mailing list