1*1f5207b7SJohn Levon #include "check_debug.h"
2*1f5207b7SJohn Levon 
3*1f5207b7SJohn Levon void frob();
4*1f5207b7SJohn Levon 
5*1f5207b7SJohn Levon #define min(a, b) ((a) < (b) ? (a) : (b))
6*1f5207b7SJohn Levon 
func(void)7*1f5207b7SJohn Levon void func(void)
8*1f5207b7SJohn Levon {
9*1f5207b7SJohn Levon 	int i;
10*1f5207b7SJohn Levon 	int val;
11*1f5207b7SJohn Levon 
12*1f5207b7SJohn Levon 	for (i = 0; i < 10; i++) {
13*1f5207b7SJohn Levon 		val = min(5, i);
14*1f5207b7SJohn Levon 		__smatch_value("val");
15*1f5207b7SJohn Levon 	}
16*1f5207b7SJohn Levon 
17*1f5207b7SJohn Levon 	i++;
18*1f5207b7SJohn Levon 	__smatch_value("i");
19*1f5207b7SJohn Levon 	val = min(100, i);
20*1f5207b7SJohn Levon 	__smatch_value("val");
21*1f5207b7SJohn Levon 
22*1f5207b7SJohn Levon 	for (i = 0; i < 10; i++)
23*1f5207b7SJohn Levon 		frob();
24*1f5207b7SJohn Levon 
25*1f5207b7SJohn Levon 	val = min(100, i);
26*1f5207b7SJohn Levon 	__smatch_value("val");
27*1f5207b7SJohn Levon }
28*1f5207b7SJohn Levon /*
29*1f5207b7SJohn Levon  * check-name: assigning select statements
30*1f5207b7SJohn Levon  * check-command: smatch -I.. sm_select_assign.c
31*1f5207b7SJohn Levon  *
32*1f5207b7SJohn Levon  * check-output-start
33*1f5207b7SJohn Levon sm_select_assign.c:14 func() val = 0-5
34*1f5207b7SJohn Levon sm_select_assign.c:18 func() i = 11-s32max
35*1f5207b7SJohn Levon sm_select_assign.c:20 func() val = 11-100
36*1f5207b7SJohn Levon sm_select_assign.c:26 func() val = 10
37*1f5207b7SJohn Levon  * check-output-end
38*1f5207b7SJohn Levon  */
39