139213Sgibbs/* { dg-do compile } */
239213Sgibbs/* { dg-options "-O2" } */
339213Sgibbs/* { dg-final { scan-assembler "j(ra|mp)\[ \t\]*interrupt_sibcall" } } */
439213Sgibbs/* { dg-final { scan-assembler "j(b|)sr\[ \t\]*interrupt_call" } } */
539213Sgibbs/* { dg-final { scan-assembler "j(ra|mp)\[ \t\]*normal_sibcall" } } */
639213Sgibbs
739213Sgibbsvoid normal_sibcall (void);
839213Sgibbsvoid interrupt_call (void);
939213Sgibbsvoid __attribute ((interrupt)) interrupt_sibcall (void);
1039213Sgibbs
1139213Sgibbsvoid normal (void)
1239213Sgibbs{
1339213Sgibbs  normal_sibcall ();
1439213Sgibbs}
1539213Sgibbs
1639213Sgibbsvoid __attribute ((interrupt)) interrupt (void)
1739213Sgibbs{
1839213Sgibbs  interrupt_call ();
1939213Sgibbs}
2039213Sgibbs
2139213Sgibbsvoid __attribute ((interrupt)) interrupt_2 (void)
2239213Sgibbs{
2339213Sgibbs  interrupt_sibcall ();
2439213Sgibbs}
2539213Sgibbs