1 /* PR c/7652 */
2 /* { dg-do compile } */
3 /* { dg-options "-Wimplicit-fallthrough" } */
4 
5 extern void bar (int);
6 extern void die (void) __attribute__((noreturn));
7 
8 /* Test may_fallthru-ness.  */
9 
10 void
f(int i)11 f (int i)
12 {
13   switch (i)
14     {
15     case 1:
16       bar (0);
17       __attribute__((fallthrough));
18     case 2:;
19     }
20 
21   switch (i)
22     {
23     case 1:
24       bar (0);
25       return;
26     case 2:;
27     }
28 
29   switch (i)
30     {
31     case 1:
32       bar (0);
33       break;
34     case 2:;
35     }
36 
37   switch (i)
38     {
39     case 1:
40       bar (0);
41       goto L1;
42 L1:
43     case 2:;
44     }
45 
46   switch (i)
47     {
48     case 1:
49       bar (0);
50       die ();
51     case 2:;
52     }
53 
54   switch (i)
55     {
56     case 1:
57       {
58 	int i, j, k;
59 	bar (0);
60 	__attribute__((fallthrough));
61       }
62     case 2:;
63     }
64 
65   switch (i)
66     {
67     case 1:
68       {
69 	int i, j, k;
70         bar (0);
71         return;
72       }
73     case 2:;
74     }
75 
76   switch (i)
77     {
78     case 1:
79       {
80 	int i, j, k;
81         bar (0);
82         break;
83       }
84     case 2:;
85     }
86 
87   switch (i)
88     {
89     case 1:
90       {
91 	int i, j, k;
92         bar (0);
93         goto L2;
94       }
95 L2:
96     case 2:;
97     }
98 
99   switch (i)
100     {
101     case 1:
102       {
103 	int i, j, k;
104         bar (0);
105         die ();
106       }
107     case 2:;
108     }
109 }
110