1 /* { dg-do run } */
2 
3 extern void abort(void);
4 
5 typedef struct Foo { int a; int b; }  Foo;
6 
foo(Foo first,Foo last,_Bool ret_first)7 Foo foo(Foo first, Foo last, _Bool ret_first)
8 {
9   Foo t;
10   Foo *t1 = (ret_first ? &first : &last);
11   first.a = 2;
12   last.b = 3;
13   t.a = t1->a;
14   t.b = t1->b;
15   t.a += first.a;
16   t.b += last.b;
17   return t;
18 }
19 
main()20 int main()
21 {
22   Foo first = (Foo){1, 2};
23   Foo last = (Foo){3, 4};
24   Foo ret = foo(first, last, 0);
25   if (ret.b != 6)
26     abort ();
27   return 0;
28 }
29