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

* [Bug tree-optimization/52907] Underflowing floating point expressions wrongly folded to zero
  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 ` 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
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-04-10 12:20 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-04-10
     Ever Confirmed|0                           |1

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-04-10 12:18:12 UTC ---
Does real.c even communicate this fact?


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

* [Bug tree-optimization/52907] Underflowing floating point expressions wrongly folded to zero
  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
  2 siblings, 0 replies; 4+ messages in thread
From: joseph at codesourcery dot com @ 2012-04-23 20:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-04-23 20:02:50 UTC ---
On Tue, 10 Apr 2012, rguenth at gcc dot gnu.org wrote:

> Does real.c even communicate this fact?

You can identify underflow from the result of multiplication or division 
being zero or subnormal (unless an operand is zero or infinite), just as 
overflow is identified from an infinite result.  Information about 
subnormal results may not be conveniently communicated by real.c, but 
simply handling zero results here would be enough for the use cases in 
glibc.


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

* [Bug middle-end/52907] Underflowing floating point expressions wrongly folded to zero
  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 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-03-11  0:09 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2012-04-10 00:00:00         |2024-3-10

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Still happens.

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