11f5207b7SJohn Levon struct ture {
21f5207b7SJohn Levon 	int a;
31f5207b7SJohn Levon };
41f5207b7SJohn Levon 
51f5207b7SJohn Levon struct ture *a;
61f5207b7SJohn Levon struct ture *b;
71f5207b7SJohn Levon struct ture *c;
81f5207b7SJohn Levon 
func(void)91f5207b7SJohn Levon void func (void)
101f5207b7SJohn Levon {
111f5207b7SJohn Levon 	struct ture *aa, *ab;
121f5207b7SJohn Levon 
131f5207b7SJohn Levon 	b = 0;
141f5207b7SJohn Levon 	if (a) {
151f5207b7SJohn Levon 		aa = returns_nonnull();
161f5207b7SJohn Levon 		ab = returns_nonnull();
171f5207b7SJohn Levon 	} else {
181f5207b7SJohn Levon 		b = -1;
191f5207b7SJohn Levon 	}
201f5207b7SJohn Levon 	if (!(b)) {
211f5207b7SJohn Levon 		if (c) {
221f5207b7SJohn Levon 			aa = (void *)0;
231f5207b7SJohn Levon 			ab = (void *)0;
241f5207b7SJohn Levon 			b = -1;
251f5207b7SJohn Levon 		}
261f5207b7SJohn Levon 	}
271f5207b7SJohn Levon 	if (!c)
281f5207b7SJohn Levon 		aa->a = 1;
291f5207b7SJohn Levon 	if (b)
301f5207b7SJohn Levon 		return;
311f5207b7SJohn Levon 	ab->a = 1;
321f5207b7SJohn Levon 	return;
331f5207b7SJohn Levon }
341f5207b7SJohn Levon /*
351f5207b7SJohn Levon  * check-name: Smatch implied #2
361f5207b7SJohn Levon  * check-command: smatch --spammy sm_implied2.c
371f5207b7SJohn Levon  *
381f5207b7SJohn Levon  * check-output-start
39*efe51d0cSJohn Levon sm_implied2.c:28 func() error: potentially dereferencing uninitialized 'aa'.
401f5207b7SJohn Levon sm_implied2.c:28 func() error: potentially dereferencing uninitialized 'aa'.
411f5207b7SJohn Levon  * check-output-end
421f5207b7SJohn Levon  */
43