1*1f5207b7SJohn Levon #include "check_debug.h"
2*1f5207b7SJohn Levon 
frob(void)3*1f5207b7SJohn Levon void frob(void){}
4*1f5207b7SJohn Levon 
func(int y)5*1f5207b7SJohn Levon void func(int y)
6*1f5207b7SJohn Levon {
7*1f5207b7SJohn Levon 	int test2;
8*1f5207b7SJohn Levon 
9*1f5207b7SJohn Levon 	if (({int test2 = !!(y < 0 || y >= 10); frob(); frob(); frob(); test2;}))
10*1f5207b7SJohn Levon 		__smatch_value("y");
11*1f5207b7SJohn Levon 	else
12*1f5207b7SJohn Levon 		__smatch_value("y");
13*1f5207b7SJohn Levon 
14*1f5207b7SJohn Levon 	test2 = (y < 3 || y >= 5);
15*1f5207b7SJohn Levon 	if (test2)
16*1f5207b7SJohn Levon 		__smatch_value("y");
17*1f5207b7SJohn Levon 	else
18*1f5207b7SJohn Levon 		__smatch_value("y");
19*1f5207b7SJohn Levon 
20*1f5207b7SJohn Levon 	if (({int test3 = y < -98; frob(); frob(); frob(); test3;}))
21*1f5207b7SJohn Levon 		__smatch_value("y");
22*1f5207b7SJohn Levon }
23*1f5207b7SJohn Levon /*
24*1f5207b7SJohn Levon  * check-name: smatch implied #9
25*1f5207b7SJohn Levon  * check-command: smatch -I.. sm_implied9.c
26*1f5207b7SJohn Levon  *
27*1f5207b7SJohn Levon  * check-output-start
28*1f5207b7SJohn Levon sm_implied9.c:10 func() y = s32min-(-1),10-s32max
29*1f5207b7SJohn Levon sm_implied9.c:12 func() y = 0-9
30*1f5207b7SJohn Levon sm_implied9.c:16 func() y = s32min-2,5-s32max
31*1f5207b7SJohn Levon sm_implied9.c:18 func() y = 3-4
32*1f5207b7SJohn Levon sm_implied9.c:21 func() y = s32min-(-99)
33*1f5207b7SJohn Levon  * check-output-end
34*1f5207b7SJohn Levon  */
35