Print this page
11972 resync smatch
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/tools/smatch/src/validation/conditional-type.c
+++ new/usr/src/tools/smatch/src/validation/conditional-type.c
1 1 extern void afun(void);
2 2 extern void vcond(void);
3 3 static int array[3];
4 4
5 5 struct state {
6 6 int nr:2;
7 7 };
8 8
9 9 enum number {
10 10 zero,
11 11 one,
12 12 two,
13 13 many,
14 14 };
15 15
16 16 static int bad_if(struct state s)
17 17 {
18 18 if (vcond()) return 1;
19 19 if (s) return 1;
20 20 return 0;
21 21 }
22 22 static void bad_if2(int *a, int *b)
23 23 {
24 24 if (vcond()) *a = 1;
25 25 *b = 0;
26 26 }
27 27 static int bad_sel(struct state s)
28 28 {
29 29 return vcond() ? 1 : 0;
30 30 return s ? 1 : 0;
31 31 }
32 32 static int bad_loop_void(void)
33 33 {
34 34 while (vcond())
35 35 ;
36 36 for (;vcond();)
37 37 ;
38 38 do
39 39 ;
40 40 while (vcond());
41 41 return 0;
42 42 }
43 43
44 44
45 45 static int good_if_int(int a, _Bool b, long c, unsigned char d)
46 46 {
47 47 if (a) return 1;
48 48 if (b) return 1;
49 49 if (c) return 1;
50 50 if (d) return 1;
51 51 return 0;
52 52 }
53 53 static int good_if_float(float a, double b)
54 54 {
55 55 if (a) return 1;
56 56 if (b) return 1;
57 57 return 0;
58 58 }
59 59 static int good_if_enum(void)
60 60 {
61 61 if (many) return 1;
62 62 return 0;
63 63 }
64 64 static int good_if_bitfield(struct state s, struct state *p)
65 65 {
66 66 if (s.nr) return 1;
67 67 if (p->nr) return 1;
68 68 return 0;
69 69 }
70 70 static int good_if_ptr(void *ptr)
71 71 {
↓ open down ↓ |
71 lines elided |
↑ open up ↑ |
72 72 if (ptr) return 1;
73 73 if (array) return 1;
74 74 if (afun) return 1;
75 75 return 0;
76 76 }
77 77
78 78 /*
79 79 * check-name: conditional-type
80 80 *
81 81 * check-error-start
82 -conditional-type.c:18:18: error: incorrect type in conditional
82 +conditional-type.c:18:18: error: incorrect type in conditional (non-scalar type)
83 83 conditional-type.c:18:18: got void
84 -conditional-type.c:19:13: error: incorrect type in conditional
84 +conditional-type.c:19:13: error: incorrect type in conditional (non-scalar type)
85 85 conditional-type.c:19:13: got struct state s
86 -conditional-type.c:24:18: error: incorrect type in conditional
86 +conditional-type.c:24:18: error: incorrect type in conditional (non-scalar type)
87 87 conditional-type.c:24:18: got void
88 -conditional-type.c:29:21: error: incorrect type in conditional
88 +conditional-type.c:29:21: error: incorrect type in conditional (non-scalar type)
89 89 conditional-type.c:29:21: got void
90 -conditional-type.c:30:16: error: incorrect type in conditional
90 +conditional-type.c:30:16: error: incorrect type in conditional (non-scalar type)
91 91 conditional-type.c:30:16: got struct state s
92 -conditional-type.c:34:21: error: incorrect type in conditional
92 +conditional-type.c:34:21: error: incorrect type in conditional (non-scalar type)
93 93 conditional-type.c:34:21: got void
94 -conditional-type.c:36:20: error: incorrect type in conditional
94 +conditional-type.c:36:20: error: incorrect type in conditional (non-scalar type)
95 95 conditional-type.c:36:20: got void
96 -conditional-type.c:40:21: error: incorrect type in conditional
96 +conditional-type.c:40:21: error: incorrect type in conditional (non-scalar type)
97 97 conditional-type.c:40:21: got void
98 98 * check-error-end
99 99 */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX