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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Ah, so it really is the classical stack conflicts vs. ADDR_EXPR problem.
Before dom3 we have
  _2 = &bitint.6 + 8;
  ivtmp.40_3 = (unsigned long) _2;
from ivopts above the loop using bitint.6 and
  _44 = &bitint.6 + 8;
  ivtmp.28_43 = (unsigned long) _44;
above the second loop computing bitint.6, with
  bitint.6 ={v} {CLOBBER(eos)};
in between (or eob).
dom3 optimizes the latter to
  _44 = &MEM <unsigned long[100]> [(void *)&bitint.6 + 8B];
  ivtmp.28_43 = ivtmp.40_3;
and later on all the visible uses of bitint.6 in the second part of the
function
after
  bitint.6 ={v} {CLOBBER(eos)};
disappear.

Reply via email to