public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/52907] New: Underflowing floating point expressions wrongly folded to zero
@ 2012-04-08 21:45 jsm28 at gcc dot gnu.org
  2012-04-10 12:20 ` [Bug tree-optimization/52907] " rguenth at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: jsm28 at gcc dot gnu.org @ 2012-04-08 21:45 UTC (permalink / raw)
  To: gcc-bugs

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

             Bug #: 52907
           Summary: Underflowing floating point expressions wrongly folded
                    to zero
    Classification: Unclassified
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: jsm28@gcc.gnu.org


fold-const.c:const_binop avoids folding overflowing floating-point operations
on constant operands to constants if flag_trapping_math:

      /* Don't constant fold this floating point operation if
         the result has overflowed and flag_trapping_math.  */
      if (flag_trapping_math
          && MODE_HAS_INFINITIES (mode)
          && REAL_VALUE_ISINF (result)
          && !REAL_VALUE_ISINF (d1)
          && !REAL_VALUE_ISINF (d2))
        return NULL_TREE;

However, there is no such check for underflow.  This has the effect of
miscompiling various code in glibc's libm that expects operations on constant
values to be usable to produce an overflow or underflow exception when
required.  In particular, this appears to cause
<http://sourceware.org/bugzilla/show_bug.cgi?id=10846>.  Testcase, tested x86
and x86_64 (-O2 -ftrapping-math, wrongly compiled to return 0 rather than doing
the given computation):

static const double a = 1e-300;
double f (void) { return a * a; }


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

end of thread, other threads:[~2024-03-11  0:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-08 21:45 [Bug tree-optimization/52907] New: Underflowing floating point expressions wrongly folded to zero jsm28 at gcc dot gnu.org
2012-04-10 12:20 ` [Bug tree-optimization/52907] " rguenth at gcc dot gnu.org
2012-04-23 20:03 ` joseph at codesourcery dot com
2024-03-11  0:09 ` [Bug middle-end/52907] " pinskia at gcc dot gnu.org

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