mirror of git://gcc.gnu.org/git/gcc.git
parent
fa5b060f90
commit
ee41cff421
|
@ -1,3 +1,7 @@
|
||||||
|
2003-07-03 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||||
|
|
||||||
|
* gcc.dg/i386-call-1.c: New test.
|
||||||
|
|
||||||
2003-07-03 Nathan Sidwell <nathan@codesourcery.com>
|
2003-07-03 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
PR c++/9162
|
PR c++/9162
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/* 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;
|
||||||
|
}
|
Loading…
Reference in New Issue