db/fixup_kernel.sh: fix clear_user() handling
[smatch.git] / validation / label-scope-cgoto.c
blob1edb9948d8cfa1db842aab174e6f9c97cdb42c6d
1 void foo(void)
3 void *p = &&l;
5 l: ;
7 goto *p; // OK
10 void bar(void)
12 void *p = &&l; // KO: 'jump' inside
14 l: 1;
15 });
16 goto *p;
19 void baz(void)
21 void *p = &&l; // KO: 'jump' inside
22 0 ? 1 : ({
23 l: 1;
24 });
25 goto *p;
28 void qux(void)
30 void *p = &&l; // KO: 'jump' inside + removed
31 1 ? 1 : ({
32 l: 1;
33 });
34 goto *p;
37 void quz(void)
39 void *p;
40 p = &&l; // KO: undeclared
41 goto *p;
44 void qxu(void)
46 void *p;
48 l: 1;
49 });
50 p = &&l; // KO: 'jump' inside
51 goto *p;
54 void qzu(void)
56 void *p;
57 1 ? 1 : ({
58 l: 1;
59 });
60 p = &&l; // KO: 'jump' inside + removed
61 goto *p;
66 * check-name: label-scope-cgoto
67 * check-command: sparse -Wno-decl $file
69 * check-error-start
70 label-scope-cgoto.c:12:19: error: label 'l' used outside statement expression
71 label-scope-cgoto.c:14:1: label 'l' defined here
72 label-scope-cgoto.c:21:19: error: label 'l' used outside statement expression
73 label-scope-cgoto.c:23:1: label 'l' defined here
74 label-scope-cgoto.c:30:19: error: label 'l' used outside statement expression
75 label-scope-cgoto.c:32:1: label 'l' defined here
76 label-scope-cgoto.c:50:13: error: label 'l' used outside statement expression
77 label-scope-cgoto.c:48:1: label 'l' defined here
78 label-scope-cgoto.c:60:13: error: label 'l' used outside statement expression
79 label-scope-cgoto.c:58:1: label 'l' defined here
80 label-scope-cgoto.c:40:13: error: label 'l' was not declared
81 * check-error-end