/* 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; }