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