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