https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Another testcase which shows a related issue: ``` double t = 0.0/0.0; int main () { double x = 0.0/0.0; return __builtin_signbit (x) != __builtin_signbit (t); } ``` And another one: ``` double t = 0.0/0.0; int main () { // double x = 0.0/0.0; volatile double tt = 0.0; return __builtin_signbit (tt/tt) != __builtin_signbit (t); } ``` Note GCC and clang even disagree on the first testcase but agree with the second one. I am thinking this is all under specified really ...