https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121004
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually LLVM transforms a*0.0f into copysign if it knows that a is finite. That is: ``` float f0(float a) { if (__builtin_isnan(a) || __builtin_isinf(a)) __builtin_unreachable(); float t = a*0.f; return t; } ``` I am not 100% sure if this happens in PR 120996 but there is a possibility.