On Friday 25 March 2005 02:09, James E Wilson wrote: > I tried it, it doesn't help. It solves neither the loop invariant code > motion problem nor the do-loop optimization problem.
As pointed out by Andrew Pinski, the do-loop transformation was in fact not valid. The rest of the slowdown looks like an RTL alias analysis problem that, as far as I can tell, loop.c could not help fixing. If you make the .vars dump from GCC4 compilable, and you build that with both GCC3 and GCC4, GCC4 (of course) performs as well (bad) as for the original test case, and the GCC3 binary slows down to the same speed as the GCC4 one (runtime of 16.4s with GCC3 vs. 16.7 for GCC4). Usually, this means IVopts did something that confuses the RTL alias analysis, which is already just poor for ia64 anyway. Gr. Steven