/* PR target/5755 This testcase failed because the caller of a function returning struct expected the callee to pop up the hidden return structure pointer, while callee was actually not poping it up (as the hidden argument was passed in register). */ /* { dg-do run } */ /* { dg-options "-O2 -fomit-frame-pointer" } */ extern void abort (void); extern void exit (int); typedef struct { int a1, a2; } A; A a; A __attribute__ ((regparm (2))) foo (int x) { return a; } int __attribute__ ((regparm (2))) bar (int x) { int r = foo(0).a2; return r; } int main () { int f; a.a1 = 530; a.a2 = 980; f = bar (0); if (f != 980) abort (); exit (0); }