https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109008
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #54601|0 |1 is obsolete| | --- Comment #24 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 54602 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54602&action=edit gcc13-pr109008-wip.patch And this version has both variants of foperator_minus hooked up as well. Testcase could be e.g.: double f1 (double eps) { double d = 1. + eps; if (d == 1.) return eps; return 0.0; } double f2 (double eps) { double d = 1. + eps; if (d == 0x1.00001p0) return eps; return 0.0; } double f3 (double eps) { double d = 1. + eps; if (d == 2.) return eps; return 0.0; } double f4 (double eps) { double d = 42. - eps; if (d == 42.) return eps; return 0.0; } double f5 (double eps) { double d = 42. - eps; if (d == 0x2a.0001p0) return eps; return 0.0; } double f6 (double eps) { double d = 42. - eps; if (d == 43.) return eps; return 0.0; } double f7 (double eps) { double d = eps - 42.; if (d == 42.) return eps; return 0.0; } double f8 (double eps) { double d = eps - 42.; if (d == 0x2a.0001p0) return eps; return 0.0; } double f9 (double eps) { double d = eps - 42.; if (d == 43.) return eps; return 0.0; }