From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15258 invoked by alias); 27 Jan 2011 00:17:47 -0000 Received: (qmail 15248 invoked by uid 22791); 27 Jan 2011 00:17:47 -0000 X-SWARE-Spam-Status: No, hits=-2.9 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; Thu, 27 Jan 2011 00:17:41 +0000 From: "aoliva at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/47483] New: [4.6.0 regression] ce3 moves dereference before implied non-NULL test X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: aoliva at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Thu, 27 Jan 2011 01:25: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-01/txt/msg02908.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47483 Summary: [4.6.0 regression] ce3 moves dereference before implied non-NULL test Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned@gcc.gnu.org ReportedBy: aoliva@gcc.gnu.org Target: i686-pc-linux-gnu Created attachment 23138 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23138 Compile with -O2 -m32 on i686-pc-linux-gnu, run to crash I simplified this testcase from a FOR_EACH_LOCAL_DECL loop I introduced as part of an attempt to fix the latent problem that remained from bug 47106, after the reversal that fixed bug 47402. ce3 regards the memory reference as safe, for it's marked as non-trapping (which is true, since it's guarded by the test), and then it decides to move it ahead of the test that made it safe in the first place. This is a regression, it works with 4.5.