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

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
Before VRP we have

  # r_3 = PHI <1(2)>
  if (e_14(D) < -52)
    goto <bb 6>;
  else
    goto <bb 7>;

  <bb 4>:
  # r_7 = PHI <r_13(D)(2)>
  if (e_14(D) < -52)
    goto <bb 5>;
  else
    goto <bb 7>;

  <bb 5>:
  if (r_7 == 0)
    goto <bb 12>;
  else
    goto <bb 6>;

  <bb 6>:
  goto <bb 12>;

  <bb 7>:
  _1 = e_14(D) < 0;
  _2 = (long int) _1;
  if (e_14(D) < 0)


so _maybe_ the fix is to go over the pending asserts we want to insert and
see if we want to insert the same one on all predecessors of a block and
then simply merge them, inserting them into the block (BB 7) itself.  I
think that should be reasonably easy to do.

Reply via email to