aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/preserve-none-4.c
blob: 35c3501f6f075c423c49494c6e862d1a222023af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* { dg-do compile } */
/* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move -fomit-frame-pointer -mnoreturn-no-callee-saved-registers" } */

typedef void (*fn_t) (void) __attribute__ ((preserve_none));
extern fn_t bar;
extern void fn (void) __attribute__ ((noreturn));

__attribute__ ((noreturn))
void
foo (void)
{
  bar ();
  fn ();
}

/* { dg-final { scan-assembler-not "push\[^\n\r\]*(?:\[abcd\]x|\[sd\]i|sp|r\[0-9\]|\[xyz\]mm)" } } */
/* { dg-final { scan-assembler-not "pop\[^\n\r\]*(?:\[abcd\]x|\[sd\]i|sp|r\[0-9\]|\[xyz\]mm)" } } */
/* { dg-final { scan-assembler-not "jmp" } } */
/* { dg-final { scan-assembler "call\[\\t \]+" } } */