annotate gcc/testsuite/g++.dg/warn/pr81275-2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // PR sanitizer/81875
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 // { dg-options "-Wreturn-type" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 struct C { C (); ~C (); };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 f1 (int a, int b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 C f;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 switch (a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 case 0:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 switch (b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 case 13:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 return 7;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 case 24:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 return 19;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 case 25:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 default:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 case 9:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 return 17;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 } // { dg-warning "control reaches end of non-void function" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 f2 (int a, int b, int c, int d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 C f;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 switch (a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 case 0:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 switch (b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 case 13:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 while (c >= 10)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 if (c == d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 c--;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 return 7;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 case 29:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 switch (d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 case 35:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 default:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 return 9;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 return 8;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 case 24:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 do
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 if (c == d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 c--;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 while (c >= 10);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 return 19;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 case 25:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 for (int e = 0; e < c; ++e)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 if (e == d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 default:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 case 9:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 return 17;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 } // { dg-warning "control reaches end of non-void function" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 template <int N>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 f3 (int a, int b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 C f;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 switch (a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 case 0:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 switch (b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 case 13:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 return 7;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 case 24:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 return 19;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 case 25:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 default:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 case 9:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 return 17;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 } // { dg-warning "control reaches end of non-void function" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 template <int N>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107 f4 (int a, int b, int c, int d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 C f;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 switch (a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 case 0:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 switch (b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 case 13:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116 while (c >= 10)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 if (c == d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120 c--;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 return 7;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 case 29:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124 switch (d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126 case 35:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128 default:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129 return 9;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 return 8;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 case 24:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 do
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 if (c == d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 c--;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 while (c >= 10);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 return 19;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141 case 25:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 for (int e = 0; e < c; ++e)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143 if (e == d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 default:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 case 9:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 return 17;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 } // { dg-warning "control reaches end of non-void function" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156 f5 (int a, int b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 return f3 <0> (a, b);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162 f6 (int a, int b, int c, int d)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 return f4 <2> (a, b, c, d);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165 }