1*1f5207b7SJohn Levon struct foo { 2*1f5207b7SJohn Levon int a; 3*1f5207b7SJohn Levon }; 4*1f5207b7SJohn Levon 5*1f5207b7SJohn Levon struct foo *a; 6*1f5207b7SJohn Levon struct foo *b; 7*1f5207b7SJohn Levon struct foo *c; 8*1f5207b7SJohn Levon struct foo *d; 9*1f5207b7SJohn Levon int x, y, z; 10*1f5207b7SJohn Levon func(void)11*1f5207b7SJohn Levonvoid func (void) 12*1f5207b7SJohn Levon { 13*1f5207b7SJohn Levon a = 0; 14*1f5207b7SJohn Levon b = 0; 15*1f5207b7SJohn Levon c = 0; 16*1f5207b7SJohn Levon d = 0; 17*1f5207b7SJohn Levon 18*1f5207b7SJohn Levon if (x) 19*1f5207b7SJohn Levon a = returns_nonnull(); 20*1f5207b7SJohn Levon else 21*1f5207b7SJohn Levon b = returns_nonnull(); 22*1f5207b7SJohn Levon if (y) 23*1f5207b7SJohn Levon a = returns_nonnull(); 24*1f5207b7SJohn Levon else 25*1f5207b7SJohn Levon c = returns_nonnull(); 26*1f5207b7SJohn Levon __smatch_extra_values(); 27*1f5207b7SJohn Levon if (x || y) { 28*1f5207b7SJohn Levon a->a = 1; 29*1f5207b7SJohn Levon b->a = 2; 30*1f5207b7SJohn Levon }else { 31*1f5207b7SJohn Levon c->a = 3; 32*1f5207b7SJohn Levon } 33*1f5207b7SJohn Levon } 34*1f5207b7SJohn Levon /* 35*1f5207b7SJohn Levon * check-name: Smatch implied #6 36*1f5207b7SJohn Levon * check-command: smatch --spammy sm_implied6.c 37*1f5207b7SJohn Levon * 38*1f5207b7SJohn Levon * check-output-start 39*1f5207b7SJohn Levon sm_implied6.c:29 func() error: potential NULL dereference 'b'. 40*1f5207b7SJohn Levon * check-output-end 41*1f5207b7SJohn Levon */ 42