1/* { dg-do compile } */
2/* { dg-options "-O2" } */
3/* { dg-final { scan-assembler "j(ra|mp)\[ \t\]*interrupt_sibcall" } } */
4/* { dg-final { scan-assembler "j(b|)sr\[ \t\]*interrupt_call" } } */
5/* { dg-final { scan-assembler "j(ra|mp)\[ \t\]*normal_sibcall" } } */
6
7void normal_sibcall (void);
8void interrupt_call (void);
9void __attribute ((interrupt)) interrupt_sibcall (void);
10
11void normal (void)
12{
13  normal_sibcall ();
14}
15
16void __attribute ((interrupt)) interrupt (void)
17{
18  interrupt_call ();
19}
20
21void __attribute ((interrupt)) interrupt_2 (void)
22{
23  interrupt_sibcall ();
24}
25