public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* optimization/8635: incorrect optimization of 0.0 * Infinity
@ 2002-11-25 14:16 petdr
  0 siblings, 0 replies; 2+ messages in thread
From: petdr @ 2002-11-25 14:16 UTC (permalink / raw)
  To: gcc-gnats, debian-gcc; +Cc: mercury-bugs


>Number:         8635
>Category:       optimization
>Synopsis:       incorrect optimization of 0.0 * Infinity
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Nov 19 05:06:03 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Peter Ross
>Release:        3.0.4 (Debian testing/unstable)
>Organization:
>Environment:
System: Linux ceres 2.4.16 #1 Thu Dec 20 12:41:36 EST 2001 i686 Intel(R) Pentium(R) 4 CPU 1.60GHz GenuineIntel GNU/Linux
Architecture: i686

	
host: i386-pc-linux-gnu
build: i386-pc-linux-gnu
target: i386-pc-linux-gnu
configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/usr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as --with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-checking --enable-threads=posix --enable-java-gc=boehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux
>Description:
    0.0 * (DBL_MAX + DBL_MAX) is incorrectly optimized so that the
    result is 0.0 instead of Not a Number (NaN) at optimization level
    -O1 or greater.
>How-To-Repeat:
    gcc -O1 float.i
    ./a.out

0 is output and NaN should be.

begin 644 float.i.gz
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
?3X^/3A>SQ<')T7PQ.SS&+Q;3$SK?_@<A&;$I5EP`````
`
end
>Fix:
    Compile with -O0.
>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: optimization/8635: incorrect optimization of 0.0 * Infinity
@ 2002-12-05  0:32 zlomek
  0 siblings, 0 replies; 2+ messages in thread
From: zlomek @ 2002-12-05  0:32 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, petdr

Synopsis: incorrect optimization of 0.0 * Infinity

State-Changed-From-To: open->closed
State-Changed-By: zlomek
State-Changed-When: Thu Dec  5 00:32:47 2002
State-Changed-Why:
    When compiling with -O the variables are kept in coprocessor registers which are more exact that doubles (they are as exact as long doubles). Compiler is allowed to keep the values more exact. Although the value is infinite for doubles, it is finite for long doubles and thus 0.0 * (large but finite) = 0.
    I also tried to make a long double infinite and it worked as expected: 0.0 * inf = nan
    
    (the reason why the result with -O0 was nan is that the register was stored to memory as double and loaded again so when converting large number to doubles it became inf)
    
    Josef Zlomek

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8635


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-12-05  8:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-25 14:16 optimization/8635: incorrect optimization of 0.0 * Infinity petdr
2002-12-05  0:32 zlomek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).