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)
 ^

Reply via email to