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;
}

Reply via email to