From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7896 invoked by alias); 28 Mar 2008 22:05:53 -0000 Received: (qmail 7629 invoked by uid 48); 28 Mar 2008 22:05:10 -0000 Date: Fri, 28 Mar 2008 22:05:00 -0000 Message-ID: <20080328220510.7628.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/35745] Divide incorrectly extracted from WHERE block?; run time abort In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "burnus at gcc dot gnu dot org" 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: 2008-03/txt/msg02318.txt.bz2 ------- Comment #1 from burnus at gcc dot gnu dot org 2008-03-28 22:05 ------- Confirm. Valgrind shows: Process terminating with default action of signal 8 (SIGFPE): dumping core Integer divide by zero at address 0x40274EADB at 0x4008C6: MAIN__ (ghfhgk.f90:15) > Divide incorrectly extracted from WHERE block? Yes and no. The compiler essentially transforms (as -fdump-tree-original shows) WHERE (RDA < -15.0) IDA = 1/NF0 + 2 ENDWHERE into TMP = 1/NF0 + 2 WHERE (RDA < -15.0) IDA = TMP ENDWHERE which is the reason for the integer divide by zero and shows that moving constant expressions out of a loop is not always a good idea. -- burnus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |wrong-code Last reconfirmed|0000-00-00 00:00:00 |2008-03-28 22:05:10 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35745