URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.target/] [i386/] [pr9771-1.c] - Rev 816
Compare with Previous | Blame | View Log
/* PR rtl-optimization/9771 */ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ /* { dg-require-effective-target ilp32 } */ /* { 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; } int main() { 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); }