------- Comment #4 from dominiq at lps dot ens dot fr 2010-01-10 15:36 ------- The patch in comment #1 fixes the test in comment#0, bootstrapped, regtested, and passed my tests.
I have split the tests in comment#2 and #3 in two: module m type st integer , allocatable :: a1 end type st type at integer , allocatable :: a2(:) end type at type t1 type(st), allocatable :: b1 end type t1 type t3 type(at), allocatable :: b3 end type t3 end module m use m type(t1) :: na1, a1, aa1(:) type(t3) :: na3, a3, aa3(:) allocatable :: a1, a3, aa1, aa3 if(allocated(a1)) call abort() if(allocated(a3)) call abort() if(allocated(aa1)) call abort() if(allocated(aa3)) call abort() if(allocated(na1%b1)) call abort() if(allocated(na3%b3)) call abort() print *, 'end' end and module m type st integer , allocatable :: a1 end type st type at integer , allocatable :: a2(:) end type at type t2 type(st), allocatable :: b2(:) end type t2 type t4 type(at), allocatable :: b4(:) end type t4 end module m use m type(t2) :: na2, a2, aa2(:) type(t4) :: na4, a4, aa4(:) allocatable :: a2, a4, aa2, aa4 !if(allocated(a2)) call abort() !if(allocated(a4)) call abort() if(allocated(aa2)) call abort() if(allocated(aa4)) call abort() if(allocated(na2%b2)) call abort() if(allocated(na4%b4)) call abort() print *, 'end' end As such, both pass with the patch, while the first one gives a "Segmentation fault" before the print without the patch (the second pass). If I remove one of the '!', the test fails with "Segmentation fault" AFTER the print with or without the patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42647