Serious code size regression from 3.0.2 to now

Geoff Keating geoffk@geoffk.org
Tue Jul 23 16:35:00 GMT 2002


It sounds like at least one of the problems is that very short
sequences of code are being made to each align at the start of a cache line,
but if you have (for example, not any particular real processor)

        .align 5
        mov r0,#1
        b L123
        .align 5
        mov r0,#2
        b L124
...

you don't need the second '.align', since the next chunk will be fully
contained in a cache line.

If this is done properly, most short code sequences won't need extra
alignment...

One tricky bit is that sometimes multiple alignments are helpful, for instance

        .align 5
        b L123
        .align 5
        mov r0,#2
        b L124

the middle '.align' might need to be a '.align 3' (rather than
deleted) if it will help to keep code aligned to two-instruction
boundaries.  This is still much better than the original, though.

This would be a helpful project.  Perhaps it should go on the projects page?

-- 
- Geoffrey Keating <geoffk@geoffk.org> <geoffk@redhat.com>



More information about the Gcc-bugs mailing list