https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
Bug ID: 106574
Summary: gcc 12 with O3 leads to failures in glibc's y1f128
tests
Product: gcc
Version: 12.1.1
Status: UNCONFIRMED
Severity: normal
Pr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #1 from Michael Hudson-Doyle
---
oops forgot the link to my glibc bug
https://sourceware.org/bugzilla/show_bug.cgi?id=29463
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #3 from Michael Hudson-Doyle
---
Certainly this could be "handled" by bumping the tolerance I guess. Not sure
how to tell if that is appropriate though...
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #6 from Michael Hudson-Doyle
---
Are there any tips as to how to diagnose this further? I tried putting a
math_opt_barrier on this line:
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/ieee754/ldbl-128/e_j1l.c;h=54c457681ae
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #8 from Michael Hudson-Doyle
---
I just changed
z = xx * xx;
to
z = math_opt_barrier(xx * xx);
which perhaps isn't sufficient.
But my reading of the assembly is that the issue is that some of the math code
is being
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #9 from Michael Hudson-Doyle
---
I uploaded the object file with the bad code to
https://people.canonical.com/~mwh/e_j1f128.os.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #10 from Michael Hudson-Doyle
---
FWIW, I see a similar error on ppc64el with what looks like a similar cause. (I
also see other errors that do not go away with s/O3/O2/ so that might be
something slightly different).
O3:
(kinetic
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
--- Comment #12 from Michael Hudson-Doyle
---
Ah OK, yes that fixes the failure. Does this mean all uses of
SET_RESTORE_ROUND* should be using math_opt_barrier / math_force_eval to avoid
this issue? Sounds awkward. I guess having a macro to cal
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106574
Michael Hudson-Doyle changed:
What|Removed |Added
Resolution|--- |INVALID
Status|UNCON