annotate gcc/testsuite/c-c++-common/Wswitch-unreachable-1.c @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR c/49859 */
kono
parents:
diff changeset
2 /* { dg-do compile } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 extern void foo (int);
kono
parents:
diff changeset
5 extern int j;
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 void
kono
parents:
diff changeset
8 fn0 (int i)
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 switch (i)
kono
parents:
diff changeset
11 {
kono
parents:
diff changeset
12 int k;
kono
parents:
diff changeset
13 case 1:
kono
parents:
diff changeset
14 k = 11;
kono
parents:
diff changeset
15 foo (k);
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 switch (i)
kono
parents:
diff changeset
19 j = 10; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 switch (i)
kono
parents:
diff changeset
22 ;
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 switch (i)
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 j = 12; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
27 default:
kono
parents:
diff changeset
28 foo (j);
kono
parents:
diff changeset
29 }
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 int o;
kono
parents:
diff changeset
32 switch (i)
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 o = 333; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
35 case 4: break;
kono
parents:
diff changeset
36 default:
kono
parents:
diff changeset
37 foo (o);
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 switch (i)
kono
parents:
diff changeset
41 switch (j) /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
42 {
kono
parents:
diff changeset
43 o = 42; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
44 case 8:;
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 switch (i)
kono
parents:
diff changeset
48 {
kono
parents:
diff changeset
49 int l = 3; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
50 o = 5;
kono
parents:
diff changeset
51 j = 7;
kono
parents:
diff changeset
52 ++l;
kono
parents:
diff changeset
53 }
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 switch (i)
kono
parents:
diff changeset
56 {
kono
parents:
diff changeset
57 int x;
kono
parents:
diff changeset
58 int l = 3; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
59 ++l, ++x;
kono
parents:
diff changeset
60 }
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 switch (i)
kono
parents:
diff changeset
63 if (j != 3) /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
64 foo (j);
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 switch (i)
kono
parents:
diff changeset
67 while (1)
kono
parents:
diff changeset
68 foo (0);
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 switch (i)
kono
parents:
diff changeset
71 while (i > 5) { }
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 switch (i)
kono
parents:
diff changeset
74 goto X; /* { dg-warning "statement will never be executed" } */
kono
parents:
diff changeset
75 X:
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 switch (i)
kono
parents:
diff changeset
78 do
kono
parents:
diff changeset
79 foo (1);
kono
parents:
diff changeset
80 while (1);
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 switch (i)
kono
parents:
diff changeset
83 for (;;)
kono
parents:
diff changeset
84 foo (-1);
kono
parents:
diff changeset
85
kono
parents:
diff changeset
86 switch (i)
kono
parents:
diff changeset
87 default:
kono
parents:
diff changeset
88 j = 6;
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 switch (i)
kono
parents:
diff changeset
91 {
kono
parents:
diff changeset
92 typedef int T;
kono
parents:
diff changeset
93 case 3:
kono
parents:
diff changeset
94 {
kono
parents:
diff changeset
95 T x = 5;
kono
parents:
diff changeset
96 foo (x);
kono
parents:
diff changeset
97 }
kono
parents:
diff changeset
98 }
kono
parents:
diff changeset
99
kono
parents:
diff changeset
100 switch (i)
kono
parents:
diff changeset
101 {
kono
parents:
diff changeset
102 static int g;
kono
parents:
diff changeset
103 default:
kono
parents:
diff changeset
104 foo (g);
kono
parents:
diff changeset
105 }
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 switch (i)
kono
parents:
diff changeset
108 {
kono
parents:
diff changeset
109 L:
kono
parents:
diff changeset
110 j = 16;
kono
parents:
diff changeset
111 default:
kono
parents:
diff changeset
112 if (j < 5)
kono
parents:
diff changeset
113 goto L;
kono
parents:
diff changeset
114 break;
kono
parents:
diff changeset
115 }
kono
parents:
diff changeset
116 }