http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57631
--- Comment #1 from pebbles at riseup dot net --- Here is a more complete test: // test.c ... __attribute__((signal,used)) void __vector_1() { asm(""); } // should not trigger warning, should be placed in __vectors __attribute__((signal,used)) void pretendName() asm("__vector_2"); void pretendName() { asm(""); } // should not trigger warning, should be placed in __vectors __attribute__((signal,used)) void __victor_3() { asm(""); } // should trigger warning, not be placed in __vectors __attribute__((signal,used)) void __vector_4() asm("__victor_4"); void __vector_4() { asm(""); } // should trigger warning, not be placed in __vectors int main() { return 0; } // ... test.c Really, I feel this should either be a disableable warning (if users are expected to create interrupts and signals that will not be placed in the IV) or an error.