Article View: gnu.gcc.bug
Article #2664Bug in gcc-1.35 on i386
From: William G. Bunton
Date: Mon, 22 May 1989 18:07
Date: Mon, 22 May 1989 18:07
77 lines
2280 bytes
2280 bytes
Gcc-1.35 generates incorrect assembler code when subtracting an int
from a double. Configuration is:
Linked `config.h' to `config/xm-i386v.h'.
Linked `tm.h' to `config/tm-i386gas.h'.
Linked `md' to `config/i386.md'.
Linked `aux-output.c' to `config/out-i386.c'.
Links are now set up for use with a i386g.
OS is ISC 386/ix version 2.0.1 (sysVr3.2). Machine is ITT Xtra 386.
The following file prints -32101.000000, it should print 32101.000000:
main()
{
double dval;
int ival;
dval = 32467.0;
ival = 366;
dval -= (double)ival;
printf("value is %f\n", dval);
}
----------------------
ksh1 [424]$ gcc -v t.c
gcc version 1.35
/gnu/lib/gcc-cpp -v -undef -D__GNUC__ -Dunix -Di386 -D__unix__ -D__i386__ t.c /tmp/cca07742.cpp
GNU CPP version 1.35
/gnu/lib/gcc-cc1 /tmp/cca07742.cpp -quiet -dumpbase t.c -version -o /tmp/cca07742.s
GNU C version 1.35 (80386, BSD syntax) compiled by GNU C version 1.35.
/gnu/lib/gcc-as -o t.o /tmp/cca07742.s
/gnu/lib/gcc-ld /gnu/lib/crt0.o t.o /gnu/lib/gcc-gnulib -lc
ksh1 [425]$ a.out
value is -32101.000000
ksh1 [426]$ gcc -S t.c
ksh1 [427]$ cat t.s
.file "t.c"
gcc_compiled.:
.text
.align 2
LC0:
.double 0d3.24670000000000000000e+04
LC1:
.ascii "value is %f\12\0"
.align 2
.globl _main
_main:
pushl %ebp
movl %esp,%ebp
subl $12,%esp
pushl LC0
popl -8(%ebp)
pushl LC0+4
popl -4(%ebp)
movl $366,-12(%ebp)
fildl -12(%ebp) <========
fldl -8(%ebp) <========
fsubp %st,%st(1)
fstpl -8(%ebp)
pushl -4(%ebp)
pushl -8(%ebp)
pushl $LC1
call _printf
L1:
leave
ret
ksh1 [428]$
----------------------
The problem is with the marked lines. The load of the double should
occur before the load of the int.
Bill
--
William G. Bunton wgb@tntdev.tnt.com {uunet,natinst}!tntdev!wgb
Tools & Techniques, Inc. Austin, TX
Technical Details
Message-ID:
<8905221807.AA07807@tntdev.tnt.COM>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!shelby!agate!ucbvax!tut.cis.ohio-state.edu!tntdev.tnt.com!wgbShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!shelby!agate!ucbvax!tut.cis.ohio-state.edu!tntdev.tnt.com!wgb From: wgb@tntdev.tnt.com (William G. Bunton) Newsgroups: gnu.gcc.bug Subject: Bug in gcc-1.35 on i386 Message-ID: <8905221807.AA07807@tntdev.tnt.COM> Date: 22 May 89 18:07:44 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 77