annotate gcc/testsuite/c-c++-common/dfp/struct-layout-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 #include <stdarg.h>
kono
parents:
diff changeset
2 #include "dfp-dbg.h"
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 struct S1
kono
parents:
diff changeset
5 {
kono
parents:
diff changeset
6 _Decimal64 a[0];
kono
parents:
diff changeset
7 };
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 struct S2
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 struct
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 _Decimal64 e;
kono
parents:
diff changeset
14 } b[0];
kono
parents:
diff changeset
15 };
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 struct S3
kono
parents:
diff changeset
18 {
kono
parents:
diff changeset
19 union
kono
parents:
diff changeset
20 {
kono
parents:
diff changeset
21 _Decimal64 c;
kono
parents:
diff changeset
22 } a[0];
kono
parents:
diff changeset
23 };
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 struct S4
kono
parents:
diff changeset
26 {
kono
parents:
diff changeset
27 int a[0];
kono
parents:
diff changeset
28 _Decimal64 b[0];
kono
parents:
diff changeset
29 };
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 struct S5
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 union
kono
parents:
diff changeset
34 {
kono
parents:
diff changeset
35 _Decimal64 c[0];
kono
parents:
diff changeset
36 } a;
kono
parents:
diff changeset
37 };
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 int check_var (int z, ...)
kono
parents:
diff changeset
40 {
kono
parents:
diff changeset
41 long long result;
kono
parents:
diff changeset
42 va_list ap;
kono
parents:
diff changeset
43 va_start (ap, z);
kono
parents:
diff changeset
44 va_arg (ap, struct S1);
kono
parents:
diff changeset
45 result = va_arg (ap, long long);
kono
parents:
diff changeset
46 va_end (ap);
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 return (result == 2LL);
kono
parents:
diff changeset
49 }
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 int main ()
kono
parents:
diff changeset
52 {
kono
parents:
diff changeset
53 struct S1 s1;
kono
parents:
diff changeset
54 struct S2 s2;
kono
parents:
diff changeset
55 struct S3 s3;
kono
parents:
diff changeset
56 struct S4 s4;
kono
parents:
diff changeset
57 struct S5 s5;
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 if (check_var (2, s1, 2LL) == 0)
kono
parents:
diff changeset
60 FAILURE;
kono
parents:
diff changeset
61 if (check_var (2, s2, 2LL) == 0)
kono
parents:
diff changeset
62 FAILURE;
kono
parents:
diff changeset
63 if (check_var (2, s3, 2LL) == 0)
kono
parents:
diff changeset
64 FAILURE;
kono
parents:
diff changeset
65 if (check_var (2, s4, 2LL) == 0)
kono
parents:
diff changeset
66 FAILURE;
kono
parents:
diff changeset
67 if (check_var (2, s5, 2LL) == 0)
kono
parents:
diff changeset
68 FAILURE;
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 FINISH
kono
parents:
diff changeset
71 }