Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/anon-struct-1.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 "-std=iso9899:1990 -pedantic" } */ | |
2 /* In strict ISO C mode, we don't recognize the anonymous struct/union | |
3 extension or any Microsoft extensions. */ | |
4 | |
5 struct A { char a; }; | |
6 | |
7 /* MS extension. */ | |
8 struct B { | |
9 struct A; /* { dg-warning "does not declare anything" } */ | |
10 char b; | |
11 }; | |
12 char testB[sizeof(struct B) == sizeof(struct A) ? 1 : -1]; | |
13 | |
14 /* MS extension. */ | |
15 struct C { | |
16 struct D { char d; }; /* { dg-warning "does not declare anything" } */ | |
17 char c; | |
18 }; | |
19 char testC[sizeof(struct C) == sizeof(struct A) ? 1 : -1]; | |
20 char testD[sizeof(struct D) == sizeof(struct A) ? 1 : -1]; | |
21 | |
22 /* GNU extension. */ | |
23 struct E { | |
24 struct { char z; }; /* { dg-warning "unnamed structs" } */ | |
25 char e; | |
26 }; | |
27 | |
28 | |
29 /* MS extension. */ | |
30 typedef struct A typedef_A; | |
31 struct F { | |
32 typedef_A; /* { dg-warning "does not declare anything" } */ | |
33 char f; | |
34 }; | |
35 char testF[sizeof(struct F) == sizeof(struct A) ? 1 : -1]; | |
36 | |
37 /* __extension__ enables GNU C mode for the duration of the declaration. */ | |
38 __extension__ struct G { | |
39 struct { char z; }; | |
40 char g; | |
41 }; | |
42 char testG[sizeof(struct G) == 2 * sizeof(struct A) ? 1 : -1]; | |
43 | |
44 struct H { | |
45 __extension__ struct { char z; }; | |
46 char h; | |
47 }; | |
48 char testH[sizeof(struct H) == 2 * sizeof(struct A) ? 1 : -1]; | |
49 | |
50 /* Make sure __extension__ gets turned back off. */ | |
51 struct I { | |
52 struct { char z; }; /* { dg-warning "unnamed structs" } */ | |
53 char i; | |
54 }; | |
55 char testI[sizeof(struct I) == sizeof(struct E) ? 1 : -1]; | |
56 |