http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55118



--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2012-10-30 
11:11:35 UTC ---

We can't really do much here without breaking type-based alias analysis and

data dependence analysis (which depends on seeing only array-refs when they

were present in the original source).



Which means that it is eventually worth considering to lower the address

forms some more (even the rare case we combine them with dereferences in

forwprop is suspicious).



Thus, lower



  <bb 3>:

  # i_66 = PHI <i_16(3), 0(2)>

  _12 = &MEM[(const struct Domain *)_10 +

32B].D.119657.domain_m[i_66].D.114927;

  _13 = &MEM[(struct Domain *)this_1(D) + 8B].D.119657.domain_m[i_66].D.114927;

  _14 = MEM[(const Element_t[2] &)_12];

  MEM[(Element_t[2] &)_13][0] = _14;

  _15 = MEM[(const Element_t[2] &)_12 + 4];

  MEM[(Element_t[2] &)_13][1] = _15;

  i_16 = i_66 + 1;

  if (i_16 != 3)

    goto <bb 3>;



to sth like



  tem = i_66 * 4;

  tem = tem + 32;

  _12 = _10 + tem;



nothing for 4.8 though.  And it will badly interact with __builtin_object_size

again.

Reply via email to