blob: 9cd49da3b2fa12271e0e0ea797b95264a101d7e3 [file] [log] [blame]
/* PR optimization/11304 */
/* Originator: <manuel.serrano@sophia.inria.fr> */
/* { dg-do run { target i?86-*-* } } */
/* { dg-options "-O -fomit-frame-pointer" } */
/* Verify that %eax is always restored after a call. */
extern void abort(void);
volatile int r;
void set_eax(int val)
{
__asm__ __volatile__ ("mov %0, %%eax" : : "m" (val));
}
void foo(int val)
{
r = val;
}
int bar(int x)
{
if (x)
{
set_eax(0);
return x;
}
foo(x);
}
int main(void)
{
if (bar(1) != 1)
abort();
return 0;
}