This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/18219] [4.0/4.1/4.2 Regression] bloats code by 31%



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]