This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c/10844: Wrong computation on nan initialized vectors.
- From: Christian Szegedy <szegedy at or dot uni-bonn dot de>
- To: ehrhardt at mathematik dot uni-ulm dot de, gcc-bugs at gcc dot gnu dot org, gcc-gnats at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org, nobody at gcc dot gnu dot org, szegedy at or dot uni-bonn dot de
- Date: Mon, 19 May 2003 12:05:19 +0200
- Subject: Re: c/10844: Wrong computation on nan initialized vectors.
- References: <20030518174933.18989.qmail@sources.redhat.com>
ehrhardt@mathematik.uni-ulm.de wrote:
Synopsis: Wrong computation on nan initialized vectors.
State-Changed-From-To: open->feedback
State-Changed-By: cae
State-Changed-When: Sun May 18 17:49:33 2003
State-Changed-Why:
I can't reproduce this. Could you tell us the compiler options used
to compile the code, the output of gcc -v and the assemble code
generated for the main function? Additionally your libc version might
be of interest here.
regards Christian
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10844
I just used "gcc -lm bug.c" to compile the code.
I am at work, but I can reproduce the bug on my SuSe 8.0 box, with
Reading specs from
/home/szegedy/extern/gcc-3.2-install/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
Configured with: ../gcc-3.2/configure
--prefix=/home/szegedy/extern/gcc-3.2-install
Thread model: posix
gcc version 3.2
How can I determine the glibc version?
The bug also occurs with the old 2.95 compiler.
The assembler output is:
.file "bug.c"
.section .rodata
.LC0:
.string ""
.LC2:
.string "%lg\n"
.text
.align 2
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
pushl %esi
pushl %ebx
subl $32, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
movl $10, -16(%ebp)
movl -16(%ebp), %eax
sall $3, %eax
movl %eax, (%esp)
call malloc
movl %eax, -20(%ebp)
movl $0, -12(%ebp)
.L2:
movl -12(%ebp), %eax
cmpl -16(%ebp), %eax
jl .L5
jmp .L3
.L5:
movl -12(%ebp), %eax
leal 0(,%eax,8), %esi
movl -20(%ebp), %ebx
movl $.LC0, (%esp)
call nan
pushl %eax
fildl (%esp)
leal 4(%esp), %esp
fstpl (%ebx,%esi)
leal -12(%ebp), %eax
incl (%eax)
jmp .L2
.L3:
movl -20(%ebp), %eax
movl $0, (%eax)
movl $0, 4(%eax)
movl -20(%ebp), %edx
movl -20(%ebp), %eax
fldl (%eax)
fldz
faddp %st, %st(1)
fstpl (%edx)
movl $.LC2, (%esp)
movl -20(%ebp), %eax
movl 4(%eax), %edx
movl (%eax), %eax
movl %eax, 4(%esp)
movl %edx, 8(%esp)
call printf
movl $0, %eax
leal -8(%ebp), %esp
popl %ebx
popl %esi
popl %ebp
ret
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) 3.2"