/* PR target/7559 | |
This testcase was miscompiled on x86-64, because classify_argument | |
wrongly computed the offset of nested structure fields. */ | |
extern void abort (void); | |
struct A | |
{ | |
long x; | |
}; | |
struct R | |
{ | |
struct A a, b; | |
}; | |
struct R R = { 100, 200 }; | |
void f (struct R r) | |
{ | |
if (r.a.x != R.a.x || r.b.x != R.b.x) | |
abort (); | |
} | |
struct R g (void) | |
{ | |
return R; | |
} | |
int main (void) | |
{ | |
struct R r; | |
f(R); | |
r = g(); | |
if (r.a.x != R.a.x || r.b.x != R.b.x) | |
abort (); | |
return 0; | |
} |