summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/interrupt-switch-abi.c
blob: f23e6f9870cb854929afb37d9cd3b036300d7e06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* { dg-do compile } */
/* { dg-options "-O2 -mno-mpx -mno-sse -mno-mmx -mno-80387 -mno-cld" } */

extern void bar (int);

void f1 (void){  bar (1); }
__attribute__((interrupt))
void f2 (void *frame){  bar (2); }
void f3 (void){  bar (3); }
__attribute__((interrupt))
void f4 (void *frame){  bar (4); }
void f5 (void){  bar (5); }

/* { dg-final { scan-assembler-times "push.\t%.ax" 2 } } */
/* { dg-final { scan-assembler-times "pop.\t%.ax" 2 } } */
/* { dg-final { scan-assembler-times "iret" 2 { target ia32 } } } */
/* { dg-final { scan-assembler-times "iretq" 2 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "\tcld" 2 } } */