[Bug lto/55118] Missed forward propagation of addresses
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Oct 30 11:12:00 GMT 2012
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.
More information about the Gcc-bugs
mailing list