------- Comment #21 from rguenth at gcc dot gnu dot org 2006-05-12 14:00
-------
This looks related to PR26726 as IVOPTs produces now
<bb 2>:
i = minLen + 1;
D.1588 = (int *) (unsigned int) (i * 4);
ivtmp.34 = limit + D.1588 - 4B;
ivtmp.40 = base + D.1588;
goto <bb 4> (<L1>);
<L0>:;
D.1595 = (int *) ivtmp.40;
MEM[base: D.1595, offset: -4B] = (MEM[base: (int *) ivtmp.34, offset: -4B] +
1 << 1) - MEM[base: D.1595, offset: -4B];
i = i + 1;
<L1>:;
ivtmp.34 = ivtmp.34 + 4B;
ivtmp.40 = ivtmp.40 + 4B;
if (i <= maxLen) goto <L0>; else goto <L2>;
with the seemingly innocuous offset: -4B canonicalization because of the weird
i386 backend cost model. Now if fixing that would fix the size issue is
another thing. Not replacing the exit test or using i as solely IV is another
thing - but it doesn't even consider i as IV candidate.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
BugsThisDependsOn| |26726
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18219