131
|
1 /* PR target/52991 */
|
|
2 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
|
|
3
|
|
4 struct S {
|
|
5 int a : 2;
|
|
6 __attribute__((aligned (8))) int b : 2;
|
|
7 int c : 28;
|
|
8 __attribute__((aligned (16))) int d : 2;
|
|
9 int e : 30;
|
|
10 } __attribute__((ms_struct));
|
|
11
|
|
12 struct S s;
|
|
13
|
|
14 int
|
|
15 main ()
|
|
16 {
|
|
17 int i;
|
|
18 if (sizeof (s) != 32)
|
|
19 __builtin_abort ();
|
|
20 s.a = -1;
|
|
21 for (i = 0; i < 32; ++i)
|
|
22 if (((char *) &s)[i] != (i ? 0 : 3))
|
|
23 __builtin_abort ();
|
|
24 s.a = 0;
|
|
25 s.b = -1;
|
|
26 for (i = 0; i < 32; ++i)
|
|
27 if (((char *) &s)[i] != (i ? 0 : 12))
|
|
28 __builtin_abort ();
|
|
29 s.b = 0;
|
|
30 s.c = -1;
|
|
31 for (i = 0; i < 32; ++i)
|
|
32 if (((signed char *) &s)[i] != (i > 3 ? 0 : (i ? -1 : -16)))
|
|
33 __builtin_abort ();
|
|
34 s.c = 0;
|
|
35 s.d = -1;
|
|
36 for (i = 0; i < 32; ++i)
|
|
37 if (((signed char *) &s)[i] != (i == 16 ? 3 : 0))
|
|
38 __builtin_abort ();
|
|
39 s.d = 0;
|
|
40 s.e = -1;
|
|
41 for (i = 0; i < 32; ++i)
|
|
42 if (((signed char *) &s)[i] != ((i < 16 || i > 19) ? 0 : (i == 16 ? -4 : -1)))
|
|
43 __builtin_abort ();
|
|
44 return 0;
|
|
45 }
|