From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27860 invoked by alias); 10 Jan 2010 15:37:05 -0000 Received: (qmail 27732 invoked by uid 48); 10 Jan 2010 15:36:53 -0000 Date: Sun, 10 Jan 2010 15:37:00 -0000 Message-ID: <20100110153653.27731.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/42647] Missed initialization/dealloc of allocatable scalar DT with allocatable component In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "dominiq at lps dot ens dot fr" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-01/txt/msg01141.txt.bz2 ------- 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