1*1f5207b7SJohn Levon #include "check_debug.h"
2*1f5207b7SJohn Levon 
test(int x)3*1f5207b7SJohn Levon static int test(int x)
4*1f5207b7SJohn Levon {
5*1f5207b7SJohn Levon 	if (x == 12)
6*1f5207b7SJohn Levon 		return 10;
7*1f5207b7SJohn Levon 	return 0;
8*1f5207b7SJohn Levon }
9*1f5207b7SJohn Levon 
10*1f5207b7SJohn Levon int a, b;
func(void)11*1f5207b7SJohn Levon static void func(void)
12*1f5207b7SJohn Levon {
13*1f5207b7SJohn Levon 	if (a == 12)
14*1f5207b7SJohn Levon 		b = 1;
15*1f5207b7SJohn Levon 	else
16*1f5207b7SJohn Levon 		b = 4;
17*1f5207b7SJohn Levon 	if (test(a) == 10) {
18*1f5207b7SJohn Levon 		__smatch_implied(a);
19*1f5207b7SJohn Levon 		__smatch_implied(b);
20*1f5207b7SJohn Levon 	} else {
21*1f5207b7SJohn Levon 		__smatch_implied(a);
22*1f5207b7SJohn Levon 		__smatch_implied(b);
23*1f5207b7SJohn Levon 	}
24*1f5207b7SJohn Levon 
25*1f5207b7SJohn Levon 	if (a == 12)
26*1f5207b7SJohn Levon 		b = 10;
27*1f5207b7SJohn Levon 	else
28*1f5207b7SJohn Levon 		b = 40;
29*1f5207b7SJohn Levon 
30*1f5207b7SJohn Levon 	if (test(a))
31*1f5207b7SJohn Levon 		__smatch_implied(b);
32*1f5207b7SJohn Levon 	else
33*1f5207b7SJohn Levon 		__smatch_implied(b);
34*1f5207b7SJohn Levon }
35*1f5207b7SJohn Levon /*
36*1f5207b7SJohn Levon  * check-name: smatch implied #14
37*1f5207b7SJohn Levon  * check-command: smatch -I.. sm_implied14.c
38*1f5207b7SJohn Levon  *
39*1f5207b7SJohn Levon  * check-output-start
40*1f5207b7SJohn Levon sm_implied14.c:18 func() implied: a = '12'
41*1f5207b7SJohn Levon sm_implied14.c:19 func() implied: b = '1'
42*1f5207b7SJohn Levon sm_implied14.c:21 func() implied: a = 's32min-11,13-s32max'
43*1f5207b7SJohn Levon sm_implied14.c:22 func() implied: b = '4'
44*1f5207b7SJohn Levon sm_implied14.c:31 func() implied: b = '10'
45*1f5207b7SJohn Levon sm_implied14.c:33 func() implied: b = '40'
46*1f5207b7SJohn Levon  * check-output-end
47*1f5207b7SJohn Levon  */
48