From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9693 invoked by alias); 16 Nov 2007 14:51:04 -0000 Received: (qmail 9624 invoked by uid 48); 16 Nov 2007 14:50:54 -0000 Date: Fri, 16 Nov 2007 14:51:00 -0000 Message-ID: <20071116145054.9622.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/33088] [4.1/4.2/4.3 Regression] spurious exceptions with -ffloat-store In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jakub 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: 2007-11/txt/msg01498.txt.bz2 ------- Comment #5 from jakub at gcc dot gnu dot org 2007-11-16 14:50 ------- /usr/src/gcc/obj35/gcc/xgcc -B /usr/src/gcc/obj35/gcc/ -v 2>&1 | tail -n 1; /usr/src/gcc/obj35/gcc/xgcc -B /usr/src/gcc/obj35/gcc/ -m32 -O2 -ffloat-store -o pr33088{,.c} -lm; ./pr33088; echo $? gcc version 4.3.0 20071115 (experimental) (GCC) Aborted 134 And I doubt any CCP changes would have anything to do with this. The problem is that the hole complex number is one gimple register and if either __real__ and __imag__ setting isn't close enough to each other, or if -ffloat-store is used, then this means GCC reads the unitialized value from memory using floating point load and if there is a signalling NaN on the stack, already the load signals. And fill_stack fills the stack with 0x7ff000007ff00000, which is IEEE double signalling NaN. At -O0 this testcase doesn't trigger the abort, because the moves are done using integer registers rather than FPU. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33088