annotate gcc/testsuite/gcc.dg/bf-ms-layout-5.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR target/52991 */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 struct S {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 int a : 2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 __attribute__((aligned (8))) int b : 2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 int c : 28;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 __attribute__((aligned (16))) int d : 2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 int e : 30;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 } __attribute__((ms_struct));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 struct S s;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 if (sizeof (s) != 32)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 s.a = -1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 for (i = 0; i < 32; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 if (((char *) &s)[i] != (i ? 0 : 3))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 s.a = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 s.b = -1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 for (i = 0; i < 32; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 if (((char *) &s)[i] != (i ? 0 : 12))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 s.b = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 s.c = -1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 for (i = 0; i < 32; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 if (((signed char *) &s)[i] != (i > 3 ? 0 : (i ? -1 : -16)))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 s.c = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 s.d = -1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 for (i = 0; i < 32; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 if (((signed char *) &s)[i] != (i == 16 ? 3 : 0))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 s.d = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 s.e = -1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 for (i = 0; i < 32; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 if (((signed char *) &s)[i] != ((i < 16 || i > 19) ? 0 : (i == 16 ? -4 : -1)))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 }