annotate gcc/testsuite/gcc.dg/Wcxx-compat-6.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
kono
parents:
diff changeset
2 /* { dg-options "-Wc++-compat" } */
kono
parents:
diff changeset
3 enum E1 { A, B, C };
kono
parents:
diff changeset
4 enum E2 { D, E, F };
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 enum E1 v1a = A;
kono
parents:
diff changeset
7 enum E1 v1b = D; /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
8 enum E1 v1c = 0; /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
9 enum E1 v1d = (enum E1) 0;
kono
parents:
diff changeset
10 enum E1 v1e = (enum E2) 0; /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 enum E2 v2a;
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 enum E1 a1[] =
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 A,
kono
parents:
diff changeset
17 D, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
18 0, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
19 (enum E1) 0,
kono
parents:
diff changeset
20 (enum E2) 0, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
21 A
kono
parents:
diff changeset
22 };
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 struct s1
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 enum E1 e1;
kono
parents:
diff changeset
27 };
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 struct s1 a2[] =
kono
parents:
diff changeset
30 {
kono
parents:
diff changeset
31 { A },
kono
parents:
diff changeset
32 { D }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
33 { 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
34 { (enum E1) 0 },
kono
parents:
diff changeset
35 { (enum E2) 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
36 { A }
kono
parents:
diff changeset
37 };
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 struct s1 a3[] =
kono
parents:
diff changeset
40 {
kono
parents:
diff changeset
41 [ 5 ] = { .e1 = A },
kono
parents:
diff changeset
42 [ 4 ] = { .e1 = D }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
43 [ 3 ] = { .e1 = 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
44 [ 2 ] = { .e1 = (enum E1) 0 },
kono
parents:
diff changeset
45 [ 1 ] = { .e1 = (enum E2) 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
46 [ 0 ] = { .e1 = A }
kono
parents:
diff changeset
47 };
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 struct s2
kono
parents:
diff changeset
50 {
kono
parents:
diff changeset
51 enum E1 e1 : 3;
kono
parents:
diff changeset
52 };
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 struct s2 a4[] =
kono
parents:
diff changeset
55 {
kono
parents:
diff changeset
56 { A },
kono
parents:
diff changeset
57 { D }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
58 { 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
59 { (enum E1) 0 },
kono
parents:
diff changeset
60 { (enum E2) 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
61 { A }
kono
parents:
diff changeset
62 };
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 struct s2 a5[] =
kono
parents:
diff changeset
65 {
kono
parents:
diff changeset
66 [ 5 ] = { .e1 = A },
kono
parents:
diff changeset
67 [ 4 ] = { .e1 = D }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
68 [ 3 ] = { .e1 = 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
69 [ 2 ] = { .e1 = (enum E1) 0 },
kono
parents:
diff changeset
70 [ 1 ] = { .e1 = (enum E2) 0 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
71 [ 0 ] = { .e1 = A }
kono
parents:
diff changeset
72 };
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 void
kono
parents:
diff changeset
75 f(enum E1 e1, enum E2 e2, struct s1 vs1, struct s1 *vp1)
kono
parents:
diff changeset
76 {
kono
parents:
diff changeset
77 enum E1 va1[] = {
kono
parents:
diff changeset
78 e1,
kono
parents:
diff changeset
79 e2, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
80 v1a,
kono
parents:
diff changeset
81 v2a, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
82 vs1.e1,
kono
parents:
diff changeset
83 vp1->e1,
kono
parents:
diff changeset
84 e1 ? e1 : e1,
kono
parents:
diff changeset
85 (0, e1)
kono
parents:
diff changeset
86 };
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 struct s1 va2[] = {
kono
parents:
diff changeset
89 { e1 },
kono
parents:
diff changeset
90 { e2 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
91 { v1a },
kono
parents:
diff changeset
92 { v2a }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
93 { vs1.e1 },
kono
parents:
diff changeset
94 { vp1->e1 },
kono
parents:
diff changeset
95 { e1 ? e1 : e1 },
kono
parents:
diff changeset
96 { (0, e1) }
kono
parents:
diff changeset
97 };
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 struct s2 va3[] = {
kono
parents:
diff changeset
100 { e1 },
kono
parents:
diff changeset
101 { e2 }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
102 { v1a },
kono
parents:
diff changeset
103 { v2a }, /* { dg-warning "invalid in C\[+\]\[+\]" } */
kono
parents:
diff changeset
104 { vs1.e1 },
kono
parents:
diff changeset
105 { vp1->e1 },
kono
parents:
diff changeset
106 { e1 ? e1 : e1 },
kono
parents:
diff changeset
107 { (0, e1) }
kono
parents:
diff changeset
108 };
kono
parents:
diff changeset
109 }
kono
parents:
diff changeset
110
kono
parents:
diff changeset
111 /* Match all extra informative notes. */
kono
parents:
diff changeset
112 /* { dg-message "near initialization for" "expected" { target *-*-* } 0 } */