https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104645

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
So it's unhandled

  <bb 2> :
  if (i_3(D) != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  _4 = i_3(D) & 1;
  iftmp.0_5 = (int) _4;

  <bb 4> :
  # iftmp.0_2 = PHI <iftmp.0_5(3), 0(2)>
  return iftmp.0_2;

it also doesn't handle

  <bb 2> :
  if (i_3(D) != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  i.1_1 = (int) i_3(D);
  iftmp.0_5 = i.1_1 & 1;

  <bb 4> :
  # iftmp.0_2 = PHI <iftmp.0_5(3), 0(2)>
  return iftmp.0_2;

I wonder if we can't cook up a fix for GCC 12 though since it _is_ a regression
after all.  Just look through (nop-)conversions somehow.

Reply via email to