From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16123 invoked by alias); 29 Aug 2006 20:23:17 -0000 Received: (qmail 15842 invoked by uid 48); 29 Aug 2006 20:23:05 -0000 Date: Tue, 29 Aug 2006 20:23:00 -0000 Message-ID: <20060829202305.15841.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/27287] [4.1 Regression] returning constant double In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "guenter at roeck-us dot net" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-08/txt/msg02585.txt.bz2 List-Id: ------- Comment #23 from guenter at roeck-us dot net 2006-08-29 20:23 ------- Here is a test case: double calc(double val, double *result) { double f = val - (double)((int)val); *result = val - f; if (!val) return val - *result; else return val; } Compile with: gcc testc2.c -S -mcpu=8548 -mfloat-gprs=double -o testc2.S Generates the following (bad) code: .... .L2: evldd 0,24(31) evstdd 0,40(31) .L4: evldd 9,40(31) stw 9,48(31) stw 10,52(31) lwz 9,48(31) .... "evldd 9,40(31)" is generated from "evldd%X1 %0,%y1". Unfortunately, I don't know enough to have a clue what needs to be changed to fix this, though I did find out that simply replacing "evldd%X1 %0,%y1" with "evldd%X1 %0,%y1\;evmergelo %L0,%0,%0" is insufficient and causes problems elsewhere. Should I file a new bug or reopen this one ? -- guenter at roeck-us dot net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |guenter at roeck-us dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27287