Bob Paddock <[EMAIL PROTECTED]> wrote:

> 4.1.2 makes larger code than 3.4.6 and no longer fits in some
> smaller devices like the 2313.

For the applications I've been working on, it produces 5...10 %
smaller code.  For those apps where it produces larger code, please
analyze this, and if you can isolate it, file GCC bug reports for it.
Arguably, it's a bit of work to do that (and to subsequently discuss
the issue with the GCC developers), but it's the only way how it might
possibly be fixed in future releases.  I already started so, see

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31528

for one example.  Btw., to single out that one as the reason for your
code size changes, try compiling with -fno-inline.

Also, keep in mind that Björn Haase's ATmega256x patch added the
feature to make main() a normal function, which causes it to get a
prologue and epilogue.  This can be avoided by using:

int main(void) __attribute__((naked, noreturn));

int
main(void)
{
        /* ... */
        for (;;) {
                /* ... */
        }
}

which causes a warning about a noreturn function returning, but will
otherwise produce about the same code as it used to do before without
that patch.  The final solution will probably be a new attribute that
does approximately the same as the above combination except that
main() is still allowed to return a value anyway (so the above warning
won't be triggered anymore).

-- 
cheers, J"org               .-.-.   --... ...--   -.. .  DL8DTL

http://www.sax.de/~joerg/                        NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)


_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to