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