https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109154
--- Comment #28 from Richard Biener <rguenth at gcc dot gnu.org> ---
So as for what ranger should get, the testcase in comment#2 after EVRP still
sees
<bb 3> :
_1 = (float) l_10;
_2 = _1 < 0.0;
zone1_17 = (int) _2;
if (_1 < 0.0)
goto <bb 4>; [INV]
else
goto <bb 5>; [INV]
<bb 4> :
<bb 5> :
# iftmp.0_11 = PHI <zone1_17(4), 1(3)>
note how zone1_17 in the PHI argument should have '1' substituted. That
still is missing if you simplify and remove undefined behavior like
int fasten_main_natpro_chrg_init;
int fasten_main_natpro(int l)
{
float elcdst = 1;
int zone1 = l < 0.0f, chrg_e = fasten_main_natpro_chrg_init * (zone1 ?: 1) *
(l < elcdst ? 1 : 0.0f);
return chrg_e;
}