| /* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */ |
| |
| struct foo |
| { |
| int a, b, c, d; |
| double doubl; |
| } s1, s2; |
| |
| #ifndef ONLY2 |
| |
| struct foo |
| structret (s1, i1, i2, s2) |
| struct foo s1, s2; |
| int i1, i2; |
| { |
| if (i1 != i2) |
| { |
| if (i1 < i2) |
| return s1; |
| else |
| return s2; |
| } |
| s2.a = 11; |
| s2.b = 22; |
| s2.c = s1.c; |
| s2.d = s1.d; |
| return s2; |
| } |
| |
| #endif |
| |
| #ifndef ONLY1 |
| |
| struct foo |
| mani (a, b) |
| { |
| return structret (s1, a, b, s2); |
| } |
| |
| init () |
| { |
| s1.a = 1; |
| s1.b = 2; |
| s1.c = 3; |
| s1.d = 4; |
| s1.doubl = 3.1415; |
| s2.a = -1; |
| s2.b = -2; |
| s2.c = -3; |
| s2.d = -4; |
| s2.doubl = 2.71818; |
| } |
| |
| main () |
| { |
| struct foo s; |
| |
| init (); |
| s = mani (1, 1); |
| printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl); |
| |
| init (); |
| s = mani (2, 1); |
| printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl); |
| |
| init (); |
| s = mani (1, 2); |
| printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl); |
| } |
| |
| #endif |