http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396
--- Comment #7 from Ian Thompson <ijt5 at cornell dot edu> --- (In reply to Martin Nowak from comment #5) > This should have a high priority, it makes LTO completely unusable on AVR. I've been building with LTO for AVR without issue. The warning is purely cosmetic. If you're worried about not being able to build with -Werror (since this can't be suppressed), you could split your compile and link steps into separate commands: $ avr-gcc -Wall -Werror -mmcu=atmega8 -flto -c isr.c -o isr.o $ avr-gcc -mmcu=atmega8 -flto isr.o -o isr In function '__vector_14': isr.c:10:1: warning: '_vector_14' appears to be a misspelled signal handler [enabled by default] ISR (ADC_vect) ^ You could even do something fancy by piping the linker output to sed/grep/awk to filter out the bogus warning. Not sure if this is relevant, but the warning only comes up during linking, while any actually misspelled handlers will come up during compile. To show this even better, misspell ADC_vect in the initial example. You actually get the warning twice: isr.c: In function 'AD_vect': isr.c:10:6: warning: 'AD_vect' appears to be a misspelled signal handler [enabled by default] ISR (AD_vect) ^ isr.c:5:10: note: in definition of macro 'ISR' void vector (void) ^ In function 'AD_vect': isr.c:10:1: warning: 'D_vect' appears to be a misspelled signal handler [enabled by default] ISR (AD_vect) ^