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