summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/interrupt-redzone-2.c
blob: df916cad0da6d4468c32c015aa23972d3886a91a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O2 -mno-mpx -mno-sse -mno-mmx -mno-80387 -mno-cld -mred-zone" } */

void
__attribute__((interrupt))
fn (void *frame)
{
  /* Need to adjust stack if more than 128 bytes are used on stack
     with a 128-byte red zone.  */
  long long int i0;
  long long int i1;
  long long int i2;
  long long int i3;
  long long int i4;
  long long int i5;
  long long int i6;
  long long int i7;
  long long int i8;
  long long int i9;
  long long int i10;
  long long int i11;
  long long int i12;
  long long int i13;
  char c;
  asm ("# %0, %1, %2, %3, %4, %5, %6, %7"
       : "=m" (i0), "=m" (i1), "=m" (i2), "=m" (i3),
         "=m" (i4), "=m" (i5), "=m" (i6), "=m" (i7),
         "=m" (i8), "=m" (i9), "=m" (i10), "=m" (i11),
	 "=m" (i12), "=m" (i13), "=m" (c));
}

/* { dg-final { scan-assembler-times "(?:sub|add)(?:l|q)\[\\t \]*\\\$\[0-9\]*,\[\\t \]*%\[re\]?sp" 2 } } */
/* { dg-final { scan-assembler-not "\tcld" } } */