1 void _spin_lock(int name);
2 void _spin_unlock(int name);
3 
frob(void)4 void frob(void){}
5 int a;
6 int b;
7 int c;
func(void)8 int func (void)
9 {
10 	int mylock = 1;
11 	int mylock2 = 2;
12 
13 	if (a == 3)
14 	      	_spin_lock(mylock);
15 	if (b)
16 		frob();
17 	if (a == 3)
18 	      	_spin_unlock(mylock);
19 	if (a)
20 	      	_spin_lock(mylock);
21 	if (c)
22 		return 0;
23 	if (!!a)
24 	      	_spin_unlock(mylock);
25 	return 0;
26 }
27 
28 /*
29  * check-name: Smatch implied #4
30  * check-command: smatch --project=kernel --spammy sm_implied4.c
31  *
32  * check-output-start
33 sm_implied4.c:22 func() warn: 'spin_lock:mylock' is sometimes locked here and sometimes unlocked.
34  * check-output-end
35  */
36