OpenCores
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);
}
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.