[parisc-linux] target/10272: [3.0/3.2/3.3/3.4] Floating point args not correctly loaded for function calls
Randolph Chung
Randolph Chung <tausq@debian.org>
31 Mar 2003 05:23:01 -0000
>Number: 10272
>Category: target
>Synopsis: [3.0/3.2/3.3/3.4] Floating point args not correctly loaded for function calls
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Mon Mar 31 05:26:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Randolph Chung <tausq@debian.org>
>Release: 3.3 20030309 (Debian prerelease) (Debian testing/unstable) [and others]
>Organization:
>Environment:
System: Linux gsyprf11.external.hp.com 2.4.20-pa18-UP #1 Sat Jan 4 22:06:52 PST 2
003 parisc64 unknown unknown GNU/Linux
Architecture: parisc64
<machine, os, target, libraries (multiple lines)>
host: hppa-unknown-linux-gnu
build: hppa-unknown-linux-gnu
target: hppa-unknown-linux-gnu
configured with: ../src/configure -v --enable-languages=c,c++,f77,objc,ada,treela
ng --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-inc
lude-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --w
ithout-included-gettext --enable-__cxa_atexit --enable-sjlj-exceptions --enable-c
locale=gnu --enable-debug --enable-objc-gc hppa-linux
>Description:
This one looks similar to 10271, but filing separately because the test case is a bit different. Not sure if it's the same bug or not.
At -O2 the floating point argument is not getting loaded into the right registers to pass to fprintf().
>How-To-Repeat:
$ gcc-3.3 -O2 -o bug bug.c -lm
$ ./bug
-1.488583e+284
$ gcc-3.3 -O1 -o bug bug.c -lm
$ ./bug
nan
-------8< bug.c 8<------------
#include <stdio.h>
#include <math.h>
void doprint(double d)
{
int i = (int)d;
if ((double)i == d) {
fprintf(stdout, "%d\n", i);
} else {
fprintf(stdout, "%e\n", d);
}
}
int main(int argc, char **argv)
{
doprint(log(-8)); /* nan */
return 0;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: