11f5207b7SJohn Levon #include "check_debug.h"
21f5207b7SJohn Levon 
31f5207b7SJohn Levon struct foo {
41f5207b7SJohn Levon 	int x;
51f5207b7SJohn Levon };
61f5207b7SJohn Levon 
71f5207b7SJohn Levon void *frob();
81f5207b7SJohn Levon 
91f5207b7SJohn Levon struct foo *foo;
101f5207b7SJohn Levon 
111f5207b7SJohn Levon int x;
121f5207b7SJohn Levon 
ad_agg_selection_logic(void)131f5207b7SJohn Levon static void ad_agg_selection_logic(void)
141f5207b7SJohn Levon {
151f5207b7SJohn Levon 	int a;
161f5207b7SJohn Levon 
171f5207b7SJohn Levon 
181f5207b7SJohn Levon 	if (x) {
191f5207b7SJohn Levon 		if (foo && foo->x)
201f5207b7SJohn Levon 			a = 1;
211f5207b7SJohn Levon 		else
221f5207b7SJohn Levon 			a = 0;
231f5207b7SJohn Levon 
241f5207b7SJohn Levon 		if (frob())
251f5207b7SJohn Levon 			a = frob();
261f5207b7SJohn Levon 
271f5207b7SJohn Levon 		if (a)
281f5207b7SJohn Levon 			__smatch_implied(foo);
291f5207b7SJohn Levon 	}
301f5207b7SJohn Levon }
311f5207b7SJohn Levon /*
321f5207b7SJohn Levon  * check-name: smatch implied #12
331f5207b7SJohn Levon  * check-command: smatch -I.. -m64 sm_implied12.c
341f5207b7SJohn Levon  *
351f5207b7SJohn Levon  * check-output-start
36*efe51d0cSJohn Levon sm_implied12.c:28 ad_agg_selection_logic() implied: foo = '0,4096-ptr_max'
371f5207b7SJohn Levon  * check-output-end
381f5207b7SJohn Levon  */
39