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