(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
msp430/
isr-push-pop-leaf-isr-430.c
       1  /* { dg-do compile } */
       2  /* { dg-skip-if "" { *-*-* } { "-mcpu=msp430x*" "-mlarge" } { "" } } */
       3  /* { dg-options "-mcpu=msp430" } */
       4  /* { dg-final { scan-assembler "PUSH\tR5" } } */
       5  /* { dg-final { scan-assembler "PUSH\tR12" } } */
       6  /* { dg-final { scan-assembler-not "PUSH\tR4" } } */
       7  /* { dg-final { scan-assembler-not "PUSH\tR11" } } */
       8  
       9  /* To check that the compiler doesn't blindly save all regs, we omit R4 and R11
      10     from the trashing.  */
      11  #define TRASH_REGS_LITE				\
      12    __asm__ ("mov #0xFFFF, r5" : : : "R5");	\
      13    __asm__ ("mov #0xFFFF, r6" : : : "R6");	\
      14    __asm__ ("mov #0xFFFF, r7" : : : "R7");	\
      15    __asm__ ("mov #0xFFFF, r8" : : : "R8");	\
      16    __asm__ ("mov #0xFFFF, r9" : : : "R9");	\
      17    __asm__ ("mov #0xFFFF, r10" : : : "R10");	\
      18    __asm__ ("mov #0xFFFF, r12" : : : "R12");	\
      19    __asm__ ("mov #0xFFFF, r13" : : : "R13");	\
      20    __asm__ ("mov #0xFFFF, r14" : : : "R14");	\
      21    __asm__ ("mov #0xFFFF, r15" : : : "R15");
      22  
      23  void __attribute__((interrupt))
      24  isr_leaf (void)
      25  {
      26    TRASH_REGS_LITE
      27  }