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.