[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Thu May 23 21:53:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678
--- Comment #41 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
It's likely that caring about exceptions would actually be worse for
optimization than caring about rounding modes (because exceptions mean
that floating-point operations can write global state, not just read it).
I.e., a proper implementation would also indicate splitting
-ftrapping-math into the existing parts relating only to local
transformations, and something new for the global effects of operations
being considered to write the exception state, and so not be movable past
any code that might read it (which includes most function calls, and asms
depending on whether they might read the floating-point state register).
(There are plenty of local bugs in this area - both in machine-independent
optimizations, and in machine-specific code, or libgcc code, that doesn't
do the right thing regarding exceptions; lots of thorough tests would be
needed to find such places. But in general the local bugs should be
individually straightforward to fix in a way that the global issues
aren't.)
(See discussions on the gcc mailing list in Dec 2012 / Jan 2013 / Feb 2013
for more details in this area.)
More information about the Gcc-bugs
mailing list