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