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 Levonvoid 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