Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/pr41935.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-options "-Warray-bounds" } */ | |
2 /* { dg-do compile } */ | |
3 | |
4 struct A | |
5 { | |
6 int i; | |
7 char p[1]; | |
8 }; | |
9 | |
10 struct B | |
11 { | |
12 struct A a; | |
13 int i; | |
14 }; | |
15 | |
16 struct C | |
17 { | |
18 int i; | |
19 struct A a; | |
20 }; | |
21 | |
22 union D | |
23 { | |
24 char p[1]; | |
25 struct A a; | |
26 struct B b; | |
27 struct C c; | |
28 }; | |
29 | |
30 struct E | |
31 { | |
32 int i; | |
33 union D d; | |
34 }; | |
35 | |
36 struct F | |
37 { | |
38 union D d; | |
39 int i; | |
40 }; | |
41 | |
42 union G | |
43 { | |
44 int i; | |
45 union D d; | |
46 }; | |
47 | |
48 void | |
49 f0 () | |
50 { | |
51 __builtin_offsetof (struct A, p[4]); /* OK */ | |
52 __builtin_offsetof (struct B, a.p[4]); /* { dg-warning "greater than size" } */ | |
53 __builtin_offsetof (struct C, a.p[4]); /* OK */ | |
54 __builtin_offsetof (union D, p[4]); /* OK */ | |
55 __builtin_offsetof (union D, a.p[4]); /* OK */ | |
56 __builtin_offsetof (union D, b.a.p[4]); /* { dg-warning "greater than size" } */ | |
57 __builtin_offsetof (union D, c.a.p[4]); /* OK */ | |
58 __builtin_offsetof (struct E, d.p[4]); /* OK */ | |
59 __builtin_offsetof (struct E, d.a.p[4]); /* OK */ | |
60 __builtin_offsetof (struct E, d.b.a.p[4]); /* { dg-warning "greater than size" } */ | |
61 __builtin_offsetof (struct E, d.c.a.p[4]); /* OK */ | |
62 __builtin_offsetof (struct F, d.p[4]); /* { dg-warning "greater than size" } */ | |
63 __builtin_offsetof (struct F, d.a.p[4]); /* { dg-warning "greater than size" } */ | |
64 __builtin_offsetof (struct F, d.b.a.p[4]); /* { dg-warning "greater than size" } */ | |
65 __builtin_offsetof (struct F, d.c.a.p[4]); /* { dg-warning "greater than size" } */ | |
66 __builtin_offsetof (union G, d.p[4]); /* OK */ | |
67 __builtin_offsetof (union G, d.a.p[4]); /* OK */ | |
68 __builtin_offsetof (union G, d.b.a.p[4]); /* { dg-warning "greater than size" } */ | |
69 __builtin_offsetof (union G, d.c.a.p[4]); /* OK */ | |
70 } |