C99 testsuite readiness: Compile more tests with -std=gnu89
[official-gcc.git] / gcc / testsuite / gcc.c-torture / compile / structret.c
blob81f7b8bdb663db19cf80e6f6eb409f6995cedb3d
1 /* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
2 /* { dg-additional-options "-std=gnu89" } */
4 struct foo
6 int a, b, c, d;
7 double doubl;
8 } s1, s2;
10 #ifndef ONLY2
12 struct foo
13 structret (s1, i1, i2, s2)
14 struct foo s1, s2;
15 int i1, i2;
17 if (i1 != i2)
19 if (i1 < i2)
20 return s1;
21 else
22 return s2;
24 s2.a = 11;
25 s2.b = 22;
26 s2.c = s1.c;
27 s2.d = s1.d;
28 return s2;
31 #endif
33 #ifndef ONLY1
35 struct foo
36 mani (a, b)
38 return structret (s1, a, b, s2);
41 init ()
43 s1.a = 1;
44 s1.b = 2;
45 s1.c = 3;
46 s1.d = 4;
47 s1.doubl = 3.1415;
48 s2.a = -1;
49 s2.b = -2;
50 s2.c = -3;
51 s2.d = -4;
52 s2.doubl = 2.71818;
55 main ()
57 struct foo s;
59 init ();
60 s = mani (1, 1);
61 printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
63 init ();
64 s = mani (2, 1);
65 printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
67 init ();
68 s = mani (1, 2);
69 printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
72 #endif