/* { dg-do run } */ | |
extern void abort(void); | |
typedef struct Foo { int a; int b; } Foo; | |
Foo foo(Foo first, Foo last, _Bool ret_first) | |
{ | |
Foo t; | |
Foo *t1 = (ret_first ? &first : &last); | |
first.a = 2; | |
last.b = 3; | |
t.a = t1->a; | |
t.b = t1->b; | |
t.a += first.a; | |
t.b += last.b; | |
return t; | |
} | |
int main() | |
{ | |
Foo first = (Foo){1, 2}; | |
Foo last = (Foo){3, 4}; | |
Foo ret = foo(first, last, 0); | |
if (ret.b != 6) | |
abort (); | |
return 0; | |
} |