https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107569
--- Comment #42 from Jakub Jelinek <jakub at gcc dot gnu.org> --- On #c0 foo, this was previously optimized in dom2 which optimized _4 = ABS_EXPR <x_2(D)>; _3 = _4 u> 1.79769313486231570814527423731704356798070567525844996599e+308; _5 = ~_3; if (_4 u> 1.79769313486231570814527423731704356798070567525844996599e+308) goto <bb 3>; [0.00%] else goto <bb 4>; [100.00%] <bb 3> [count: 0]: __builtin_unreachable (); <bb 4> [local count: 1073741824]: return _5; without any frange related stuff as: - if (_4 u> 1.79769313486231570814527423731704356798070567525844996599e+308) + if (_3 != 0) and - return _5; + return 1; But because __builtin_unreachable () is now removed earlier (vrp1 already; without providing useful global range though), we don't do that anymore.