https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120996
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ``` if (distbb_185 < elcdst_261) goto <bb 29>; [15.25%] else goto <bb 30>; [84.75%] <bb 29> [local count: 47574280]: _584 = chrg_init_176 * iftmp.5_190; goto <bb 31>; [100.00%] <bb 30> [local count: 264301551]: _582 = iftmp.5_190 * 0.0; _585 = chrg_init_176 * _582; <bb 31> [local count: 528603101]: # _122 = PHI <_251(29), _251(30), _128(27)> # prephitmp_586 = PHI <_584(29), _585(30), chrg_init_176(27)> ``` One thing that will help (I am not 100% sure if it helps all the way) is extracting `chrg_init_176 * {_582,iftmp.5_190}` out from the if statement.