]>
Commit | Line | Data |
---|---|---|
ba64c7b8 JJ |
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 | } |