diff options
Diffstat (limited to 'gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr9771-1.c')
-rw-r--r-- | gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr9771-1.c | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr9771-1.c b/gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr9771-1.c deleted file mode 100644 index 38586fe97..000000000 --- a/gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr9771-1.c +++ /dev/null @@ -1,53 +0,0 @@ -/* PR rtl-optimization/9771 */ -/* { dg-do run } */ -/* { dg-require-effective-target ia32 } */ -/* { dg-options "-O2 -fomit-frame-pointer -ffixed-ebp" } */ - -extern void abort(void); -extern void exit(int); - -register long *B asm ("ebp"); - -long x = 10; -long y = 20; - -void bar(void) -{ - B = &y; -} - -void foo() -{ - long *adr = B; - long save = *adr; - - *adr = 123; - - bar(); - - *adr = save; -} - -/* This must not be inlined becuase main() requires the frame pointer - for stack alignment. */ -void test(void) __attribute__((noinline)); -void test(void) -{ - B = &x; - - foo(); - - if (x != 10 || y != 20) - abort(); - - /* We can't return, as our caller may assume %ebp is preserved! */ - /* We could save/restore it (like foo), but its easier to exit. */ - exit(0); -} - -int main() -{ - test(); - return 0; - -} |