diff options
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr82499-1.c | 21 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr82499-2.c | 21 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr82499-3.c | 21 |
3 files changed, 63 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr82499-1.c b/gcc/testsuite/gcc.target/i386/pr82499-1.c new file mode 100644 index 00000000000..3aba62a466f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr82499-1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* The pic register save adds unavoidable stack pointer references. */ +/* { dg-skip-if "" { ia32 && { ! nonpic } } } */ +/* These options are selected to ensure 1 word needs to be allocated + on the stack to maintain alignment for the call. This should be + transformed to push+pop. We also want to force unwind info updates. */ +/* { dg-options "-Os -fomit-frame-pointer -fasynchronous-unwind-tables" } */ +/* { dg-additional-options "-mpreferred-stack-boundary=3" { target ia32 } } */ +/* { dg-additional-options "-mpreferred-stack-boundary=4" { target { ! ia32 } } } */ +/* ms_abi has reserved stack-region. */ +/* { dg-skip-if "" { x86_64-*-mingw* } } */ + +extern void g (void); +int +f (void) +{ + g (); + return 42; +} + +/* { dg-final { scan-assembler-not "(sub|add)(l|q)\[\\t \]*\\$\[0-9\]*,\[\\t \]*%\[re\]?sp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82499-2.c b/gcc/testsuite/gcc.target/i386/pr82499-2.c new file mode 100644 index 00000000000..dde4d657e1a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr82499-2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* The pic register save adds unavoidable stack pointer references. */ +/* { dg-skip-if "" { ia32 && { ! nonpic } } } */ +/* These options are selected to ensure 1 word needs to be allocated + on the stack to maintain alignment for the call. This should be + transformed to push+pop. We also want to force unwind info updates. */ +/* { dg-options "-Os -fomit-frame-pointer -fasynchronous-unwind-tables" } */ +/* { dg-additional-options "-mpreferred-stack-boundary=3" { target ia32 } } */ +/* { dg-additional-options "-mpreferred-stack-boundary=4 -mno-red-zone" { target { ! ia32 } } } */ +/* ms_abi has reserved stack-region. */ +/* { dg-skip-if "" { x86_64-*-mingw* } } */ + +extern void g (void); +int +f (void) +{ + g (); + return 42; +} + +/* { dg-final { scan-assembler-not "(sub|add)(l|q)\[\\t \]*\\$\[0-9\]*,\[\\t \]*%\[re\]?sp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82499-3.c b/gcc/testsuite/gcc.target/i386/pr82499-3.c new file mode 100644 index 00000000000..b55a860fcca --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr82499-3.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* The pic register save adds unavoidable stack pointer references. */ +/* { dg-skip-if "" { ia32 && { ! nonpic } } } */ +/* These options are selected to ensure 1 word needs to be allocated + on the stack to maintain alignment for the call. This should be + transformed to push+pop. We also want to force unwind info updates. */ +/* { dg-options "-O2 -mtune-ctrl=single_push,single_pop -fomit-frame-pointer -fasynchronous-unwind-tables" } */ +/* { dg-additional-options "-mpreferred-stack-boundary=3" { target ia32 } } */ +/* { dg-additional-options "-mpreferred-stack-boundary=4" { target { ! ia32 } } } */ +/* ms_abi has reserved stack-region. */ +/* { dg-skip-if "" { x86_64-*-mingw* } } */ + +extern void g (void); +int +f (void) +{ + g (); + return 42; +} + +/* { dg-final { scan-assembler-not "(sub|add)(l|q)\[\\t \]*\\$\[0-9\]*,\[\\t \]*%\[re\]?sp" } } */ |