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]

Re: Serious code size regression from 3.0.2 to now


On Thu, 18 Jul 2002, Joern Rennecke wrote:

> tm wrote:
> > Basically, GCC is now generating HUGE groups of jump instructions which
> > are aligned to 32-byte boundaries.
> 
> Was it not generating these lone jump instructions before,
> or did it align them less?

I think this is what's happening:

1. The function has a large looop in it, which is slightly larger than the
   relative branch span.

2. The branch from the tail to the head doesn't reach in a single relative
   branch.

3. GCC generates a cache-aligned helper branch instruction and
   significantly increases the size of the loop body.

4. This causes other relative branches to go out of range.

5. Repeat steps 3 and 4 several dozen times.

The map_fog.i also takes a verrry long time to compile, I suspect it's
because the function is rescanned 94 times for branches which are out of
range?

Toshi



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