https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120996
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So one thing I noticed is we simplify float_var*1.f into float_var . That seems to mess up things slightly. While float_var * 0.f is not. I didn't fully look but is suspect this code does not have any nans nor signed zeros in it. But I am not 100% sure there. I am dont remember if we simplify float_var *0.0 if we know float_var is not a nan.