Fix ICE in substring-handling building 502.gcc_r (PR 87562)
[official-gcc.git] / gcc / testsuite / gcc.dg / bf-ms-layout-5.c
blob361b91464db3074b6bbd1f34e0d9d786165b0ebd
1 /* PR target/52991 */
2 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
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));
12 struct S s;
14 int
15 main ()
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;