blob: bb68e0a568ce8b6e44a680a5b2fd5696d45f9468 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2 -fno-inline" } */
/* Test pass-by-reference and pointer-typed argument passing on stack.
This test shall pass on any of the following four combinitions:
{big-endian, little-endian} {LP64, ILP32}. */
struct s5
double a;
double b;
double c;
double d;
double e;
} gS = {1.0, 2.0, 3.0, 4.0, 5.0};
double __attribute__ ((noinline))
foo (struct s5 p1, struct s5 p2, struct s5 p3, struct s5 p4,
struct s5 p5, struct s5 p6, struct s5 p7, struct s5 p8,
struct s5 p9)
asm ("");
return p9.c;
void abort (void);
int printf (const char *, ...);
int main (void)
printf ("Here we print out some values and more importantly hope that"
" the stack is getting a bit dirty for the bug to manifest itself"
"\n\t%f, %f, %f, %f, %f\n", gS.a, gS.b, gS.c, gS.d, gS.e);
if (foo (gS, gS, gS, gS, gS, gS, gS, gS, gS) != 3.0)
abort ();
return 0;