1typedef unsigned short u16; 2typedef unsigned int u32; 3 4union u { 5 u32 a; 6 u16 b; 7}; 8 9struct s { 10 u32 a; 11 u16 b; 12}; 13 14 15void bar(u16, u32); 16void union_to_int(u16 val); 17void struct_to_int(u16 val); 18 19 20void union_to_int(u16 val) 21{ 22 union u u; 23 24 u.b = val; 25 bar(u.b, u); 26} 27 28void struct_to_int(u16 val) 29{ 30 struct s s; 31 32 s.b = val; 33 bar(s.b, s); 34} 35 36/* 37 * check-name: cast-bad 00 38 * 39 * check-error-start 40cast-bad-00.c:25:18: warning: incorrect type in argument 2 (different base types) 41cast-bad-00.c:25:18: expected unsigned int [usertype] 42cast-bad-00.c:25:18: got union u [assigned] u 43cast-bad-00.c:33:18: warning: incorrect type in argument 2 (different base types) 44cast-bad-00.c:33:18: expected unsigned int [usertype] 45cast-bad-00.c:33:18: got struct s [assigned] s 46 * check-error-end 47 */ 48