URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 318 |
Rev 384 |
/* { dg-do run } */
|
/* { dg-do run } */
|
/* { dg-require-effective-target ilp32 } */
|
/* { dg-require-effective-target ilp32 } */
|
/* { dg-options "-O1 -foptimize-sibling-calls" } */
|
/* { dg-options "-O1 -foptimize-sibling-calls" } */
|
|
|
void abort (void);
|
void abort (void);
|
|
|
struct S
|
struct S
|
{
|
{
|
void (__attribute__((__stdcall__)) *f) (struct S *);
|
void (__attribute__((__stdcall__)) *f) (struct S *);
|
int i;
|
int i;
|
};
|
};
|
|
|
void __attribute__((__stdcall__))
|
void __attribute__((__stdcall__))
|
foo (struct S *s)
|
foo (struct S *s)
|
{
|
{
|
s->i++;
|
s->i++;
|
}
|
}
|
|
|
void __attribute__((__stdcall__))
|
void __attribute__((__stdcall__))
|
bar (struct S *s)
|
bar (struct S *s)
|
{
|
{
|
foo(s);
|
foo(s);
|
s->f(s);
|
s->f(s);
|
}
|
}
|
|
|
int main (void)
|
int main (void)
|
{
|
{
|
struct S s = { foo, 0 };
|
struct S s = { foo, 0 };
|
|
|
bar (&s);
|
bar (&s);
|
if (s.i != 2)
|
if (s.i != 2)
|
abort ();
|
abort ();
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.