(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
interrupt-15.c
       1  /* { dg-do compile { target *-*-linux* } } */
       2  /* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu -mpush-args -maccumulate-outgoing-args" } */
       3  
       4  typedef unsigned int uword_t __attribute__ ((mode (__word__)));
       5  extern void bar (int) __attribute__ ((no_caller_saved_registers));
       6  
       7  void
       8   __attribute__ ((interrupt))
       9  fn1 (void *frame, uword_t error)
      10  {
      11    bar (error);
      12  }
      13  
      14  void
      15   __attribute__ ((interrupt))
      16  fn2 (void *frame, uword_t error)
      17  {
      18    bar (error);
      19  }
      20  
      21  /* { dg-final { scan-assembler-not "movups\[\\t .\]*%(x|y|z)mm\[0-9\]+" } } */
      22  /* { dg-final { scan-assembler-not "(push|pop)(l|q)\[\\t \]*%(r|e)ax" { target { ! ia32 } } } } */
      23  /* { dg-final { scan-assembler-not "(push|pop)(l|q)\[\\t \]*%(r|e)(c|d)x" } } */
      24  /* { dg-final { scan-assembler-not "(push|pop)(l|q)\[\\t \]*%(r|e)si" } } */
      25  /* { dg-final { scan-assembler-not "(push|pop)l\[\\t \]*%edi" { target ia32 } } } */
      26  /* { dg-final { scan-assembler-not "(push|pop)q\[\\t \]*%rax" { target { { ! ia32 } && nonpic } } } } */
      27  /* { dg-final { scan-assembler-not "(push|pop)q\[\\t \]*%r\[0-9\]+" { target { ! ia32 } } } } */
      28  /* { dg-final { scan-assembler-times "pushl\[\\t \]*%ebp" 2 { target ia32 } } } */
      29  /* { dg-final { scan-assembler-times "leave" 2 { target { ia32 && nonpic } } } } */
      30  /* { dg-final { scan-assembler-times "pushl\[\\t \]*%eax" 2 { target ia32 } } } */
      31  /* { dg-final { scan-assembler-times "movl\[\\t \]*-4\\(%ebp\\),\[\\t \]*%eax" 2 { target { ia32 && nonpic } } } } */
      32  /* { dg-final { scan-assembler-times "pushq\[\\t \]*%rdi" 2 { target { ! ia32 } } } } */
      33  /* { dg-final { scan-assembler-times "popq\[\\t \]*%rdi" 2 { target { ! ia32 } } } } */
      34  /* { dg-final { scan-assembler "(addl|leal).*4.*%esp" { target ia32 } } } */
      35  /* { dg-final { scan-assembler "(add|lea)(?:l|q)\[\\t \]*\\\$?8.*,\[\\t \]*%\[re\]?sp" { target { ! ia32 } } } } */
      36  /* { dg-final { scan-assembler-times "iret" 2 { target ia32 } } } */
      37  /* { dg-final { scan-assembler-times "iretq" 2 { target { ! ia32 } } } } */
      38  /* { dg-final { scan-assembler-times "\tcld" 2 } } */