1 struct ture {
2 	int a;
3 };
4 
5 struct ture *a;
6 struct ture *b;
7 struct ture *c;
8 
func(void)9 void func (void)
10 {
11 	struct ture *aa, *ab;
12 
13 	b = 0;
14 	if (a) {
15 		aa = returns_nonnull();
16 		ab = returns_nonnull();
17 	} else {
18 		b = -1;
19 	}
20 	if (!(b)) {
21 		if (c) {
22 			aa = (void *)0;
23 			ab = (void *)0;
24 			b = -1;
25 		}
26 	}
27 	if (!c)
28 		aa->a = 1;
29 	if (b)
30 		return;
31 	ab->a = 1;
32 	return;
33 }
34 /*
35  * check-name: Smatch implied #2
36  * check-command: smatch --spammy sm_implied2.c
37  *
38  * check-output-start
39 sm_implied2.c:28 func() error: potentially dereferencing uninitialized 'aa'.
40 sm_implied2.c:28 func() error: potentially dereferencing uninitialized 'aa'.
41  * check-output-end
42  */
43