1*1f5207b7SJohn Levon struct ture {
2*1f5207b7SJohn Levon 	int a;
3*1f5207b7SJohn Levon };
4*1f5207b7SJohn Levon 
5*1f5207b7SJohn Levon struct ture *a;
6*1f5207b7SJohn Levon struct ture *b;
7*1f5207b7SJohn Levon 
func(void)8*1f5207b7SJohn Levon void func (void)
9*1f5207b7SJohn Levon {
10*1f5207b7SJohn Levon 	if (!a && !(a = returns_nonnull()))
11*1f5207b7SJohn Levon 		return;
12*1f5207b7SJohn Levon 	a->a = 1;
13*1f5207b7SJohn Levon 
14*1f5207b7SJohn Levon 	if (b || (b = returns_nonnull())) {
15*1f5207b7SJohn Levon 		b->a  = 1;
16*1f5207b7SJohn Levon 		return;
17*1f5207b7SJohn Levon 	}
18*1f5207b7SJohn Levon 	b->a = 1;
19*1f5207b7SJohn Levon }
20*1f5207b7SJohn Levon /*
21*1f5207b7SJohn Levon  * check-name: Compound Conditions
22*1f5207b7SJohn Levon  * check-command: smatch sm_compound_condition.c
23*1f5207b7SJohn Levon  *
24*1f5207b7SJohn Levon  * check-output-start
25*1f5207b7SJohn Levon sm_compound_condition.c:18 func() error: we previously assumed 'b' could be null (see line 14)
26*1f5207b7SJohn Levon  * check-output-end
27*1f5207b7SJohn Levon  */
28