s_to_u_return(signed int * sp)1*1f5207b7SJohn Levon static unsigned int * s_to_u_return(signed int *sp)
2*1f5207b7SJohn Levon {
3*1f5207b7SJohn Levon 	return sp;
4*1f5207b7SJohn Levon }
5*1f5207b7SJohn Levon 
u_to_s_return(unsigned int * up)6*1f5207b7SJohn Levon static signed int * u_to_s_return(unsigned int *up)
7*1f5207b7SJohn Levon {
8*1f5207b7SJohn Levon 	return up;
9*1f5207b7SJohn Levon }
10*1f5207b7SJohn Levon 
s_to_u_init(signed int * sp)11*1f5207b7SJohn Levon static unsigned int * s_to_u_init(signed int *sp)
12*1f5207b7SJohn Levon {
13*1f5207b7SJohn Levon 	unsigned int *up = sp;
14*1f5207b7SJohn Levon 	return up;
15*1f5207b7SJohn Levon }
16*1f5207b7SJohn Levon 
u_to_s_init(unsigned int * up)17*1f5207b7SJohn Levon static signed int * u_to_s_init(unsigned int *up)
18*1f5207b7SJohn Levon {
19*1f5207b7SJohn Levon 	signed int *sp = up;
20*1f5207b7SJohn Levon 	return sp;
21*1f5207b7SJohn Levon }
22*1f5207b7SJohn Levon 
s_to_u_assign(signed int * sp)23*1f5207b7SJohn Levon static unsigned int * s_to_u_assign(signed int *sp)
24*1f5207b7SJohn Levon {
25*1f5207b7SJohn Levon 	unsigned int *up;
26*1f5207b7SJohn Levon 	up = sp;
27*1f5207b7SJohn Levon 	return up;
28*1f5207b7SJohn Levon }
29*1f5207b7SJohn Levon 
u_to_s_assign(unsigned int * up)30*1f5207b7SJohn Levon static signed int * u_to_s_assign(unsigned int *up)
31*1f5207b7SJohn Levon {
32*1f5207b7SJohn Levon 	signed int *sp;
33*1f5207b7SJohn Levon 	sp = up;
34*1f5207b7SJohn Levon 	return sp;
35*1f5207b7SJohn Levon }
36*1f5207b7SJohn Levon 
37*1f5207b7SJohn Levon /*
38*1f5207b7SJohn Levon  * check-name: -Wtypesign
39*1f5207b7SJohn Levon  * check-command: sparse -Wtypesign $file
40*1f5207b7SJohn Levon  *
41*1f5207b7SJohn Levon  * check-error-start
42*1f5207b7SJohn Levon typesign.c:3:16: warning: incorrect type in return expression (different signedness)
43*1f5207b7SJohn Levon typesign.c:3:16:    expected unsigned int *
44*1f5207b7SJohn Levon typesign.c:3:16:    got signed int *sp
45*1f5207b7SJohn Levon typesign.c:8:16: warning: incorrect type in return expression (different signedness)
46*1f5207b7SJohn Levon typesign.c:8:16:    expected signed int *
47*1f5207b7SJohn Levon typesign.c:8:16:    got unsigned int *up
48*1f5207b7SJohn Levon typesign.c:13:28: warning: incorrect type in initializer (different signedness)
49*1f5207b7SJohn Levon typesign.c:13:28:    expected unsigned int *up
50*1f5207b7SJohn Levon typesign.c:13:28:    got signed int *sp
51*1f5207b7SJohn Levon typesign.c:19:26: warning: incorrect type in initializer (different signedness)
52*1f5207b7SJohn Levon typesign.c:19:26:    expected signed int *sp
53*1f5207b7SJohn Levon typesign.c:19:26:    got unsigned int *up
54*1f5207b7SJohn Levon typesign.c:26:12: warning: incorrect type in assignment (different signedness)
55*1f5207b7SJohn Levon typesign.c:26:12:    expected unsigned int *up
56*1f5207b7SJohn Levon typesign.c:26:12:    got signed int *sp
57*1f5207b7SJohn Levon typesign.c:33:12: warning: incorrect type in assignment (different signedness)
58*1f5207b7SJohn Levon typesign.c:33:12:    expected signed int *sp
59*1f5207b7SJohn Levon typesign.c:33:12:    got unsigned int *up
60*1f5207b7SJohn Levon  * check-error-end
61*1f5207b7SJohn Levon  */
62