From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8851 invoked by alias); 12 Mar 2011 10:11:02 -0000 Received: (qmail 8841 invoked by uid 22791); 12 Mar 2011 10:11:02 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 12 Mar 2011 10:10:58 +0000 From: "tkoenig at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/48066] [4.3/4.4/4.5/4.6 Regression] Segfault with SUM of zero-sized array X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: tkoenig at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P4 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.4.6 X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Sat, 12 Mar 2011 10:11:00 -0000 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: 2011-03/txt/msg01230.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48066 --- Comment #7 from Thomas Koenig 2011-03-12 10:10:46 UTC --- (In reply to comment #6) > Of course, the patch does not work as "dest" is not NULL ... > > I wonder whether a patch like the following would be correct. Probably, although it might be easier just to do Index: m4/ifunction_logical.m4 =================================================================== --- m4/ifunction_logical.m4 (Revision 170320) +++ m4/ifunction_logical.m4 (Arbeitskopie) @@ -49,8 +49,8 @@ src_kind = GFC_DESCRIPTOR_SIZE (array); len = GFC_DESCRIPTOR_EXTENT(array,dim); - if (len < 0) - len = 0; + if (len <= 0) + return; delta = GFC_DESCRIPTOR_STRIDE_BYTES(array,dim); Index: m4/ifunction.m4 =================================================================== --- m4/ifunction.m4 (Revision 170320) +++ m4/ifunction.m4 (Arbeitskopie) @@ -46,8 +46,9 @@ rank = GFC_DESCRIPTOR_RANK (array) - 1; len = GFC_DESCRIPTOR_EXTENT(array,dim); - if (len < 0) - len = 0; + if (len <= 0) + return; + delta = GFC_DESCRIPTOR_STRIDE(array,dim); for (n = 0; n < dim; n++)