------- Comment #20 from eweddington at cso dot atmel dot com 2007-09-17 02:31 ------- Subject: RE: [avr-gcc] Optimization decrease performance of struct assignment.
> Here's a patch which doesn't mess up the stack pointer update > in the epilogue. > Hi Rask, Your patch causes a regression. Sort of. I have a small patch that enables Objective-C for the AVR (not that anyone would or should use it), that hasn't been committed yet: --- gcc/config/avr/avr.h.old 2007-08-23 15:18:31.015625000 -0600 +++ gcc/config/avr/avr.h 2007-08-23 15:19:17.687500000 -0600 @@ -53,7 +53,7 @@ extern int avr_mega_p; extern int avr_have_mul_p; extern int avr_asm_only_p; extern int avr_have_movw_lpmx_p; -#ifndef IN_LIBGCC2 +#if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS) extern GTY(()) section *progmem_section; #endif Well, your patch causes a new error in configuring libobjc (when using the patch above): checking for thread model used by GCC... single checking for exception model to use... configure: error: unable to detect exception model make[1]: *** [configure-target-libobjc] Error 1 make[1]: Leaving directory `/c/avrdev/gcc/build' make: *** [all] Error 2 Normally, configure detects the exception model as sjlj. The portion of your patch that changes MOVE_MAX in avr.h is fine. The problem seems to be something with your changes in avr.md. Why this is happening, I don't really know. I'm certainly more concerned with optimizing the C compiler than I am in having ObjC build. Thanks, Eric Weddington -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180