| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| /* { dg-final { scan-assembler "j(ra|mp)\[ \t\]*interrupt_sibcall" } } */ |
| /* { dg-final { scan-assembler "j(b|)sr\[ \t\]*interrupt_call" } } */ |
| /* { dg-final { scan-assembler "j(ra|mp)\[ \t\]*normal_sibcall" } } */ |
| |
| void normal_sibcall (void); |
| void interrupt_call (void); |
| void __attribute ((interrupt)) interrupt_sibcall (void); |
| |
| void normal (void) |
| { |
| normal_sibcall (); |
| } |
| |
| void __attribute ((interrupt)) interrupt (void) |
| { |
| interrupt_call (); |
| } |
| |
| void __attribute ((interrupt)) interrupt_2 (void) |
| { |
| interrupt_sibcall (); |
| } |