public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/31542]  New: Incorrect optization with nan values
@ 2007-04-11 20:55 scott at minsters dot us
  2007-04-11 21:31 ` [Bug middle-end/31542] " scott at minsters dot us
  0 siblings, 1 reply; 4+ messages in thread
From: scott at minsters dot us @ 2007-04-11 20:55 UTC (permalink / raw)
  To: gcc-bugs

When building 64 bit with an optimization setting of -O2, -O3, or -Os, some
binary comparisons with nan values fail to produce false.  All comparisons (==,
>, <, etc) where one (or both) of the two values is nan should produce false.

There are no warnings or other error messages during compilation.  The attached
test demonstrates the error with the final assert failing.  The max() function
should return the maximum of the two values, ignoring nans.  i.e., max(5, nan)
should be 5.  This fails with gcc3.4.6 -O2 -m64.

Strangely, switching the order of the final portion of the return to something
like:

 return (a > b ? a : (b > a ? b : (isNaN(b) ? a : b)));

causes it to work.

Also, replacing isNaN() with a call to the slower, non-inline isnan() also
makes the function work.


-- 
           Summary: Incorrect optization with nan values
           Product: gcc
           Version: 3.4.6
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: scott at minsters dot us
 GCC build triplet: x86_64-redhat-linux
  GCC host triplet: x86_64-redhat-linux
GCC target triplet: x86_64-redhat-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31542


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

end of thread, other threads:[~2023-06-06 17:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-31542-4@http.gcc.gnu.org/bugzilla/>
2023-06-02  0:18 ` [Bug middle-end/31542] Incorrect optization with nan values pinskia at gcc dot gnu.org
2023-06-06 12:06 ` scott at minsters dot us
2023-06-06 17:30 ` pinskia at gcc dot gnu.org
2007-04-11 20:55 [Bug c/31542] New: " scott at minsters dot us
2007-04-11 21:31 ` [Bug middle-end/31542] " scott at minsters dot us

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).