This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Serious code size regression from 3.0.2 to now
- From: tm <tm at mail dot kloo dot net>
- To: Joern Rennecke <joern dot rennecke at superh dot com>
- Cc: gcc-bugs at gcc dot gnu dot org, stephen dot clarke at superh dot com,shumpei dot kawasaki at hsa dot hitachi dot com
- Date: Thu, 18 Jul 2002 15:52:50 -0700 (PDT)
- Subject: 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