xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_380.c (revision 57e16347b374ef90adc72ea7505ed41c5b59cf3a)
1 /*	$NetBSD: msg_380.c,v 1.2 2024/06/22 06:24:46 rillig Exp $	*/
2 # 3 "msg_380.c"
3 
4 // Test for message: lossy conversion of %Lg to '%s', arg #%d [380]
5 
6 /* lint1-extra-flags: -X 351 */
7 
8 void take_s32(int);
9 void take_u32(unsigned int);
10 void take_s64(long long);
11 void take_u64(unsigned long long);
12 
13 void
conversions(void)14 conversions(void)
15 {
16 	/* expect+1: warning: lossy conversion of -2.14748e+09 to 'int', arg #1 [380] */
17 	take_s32(-2147483649.0);
18 	take_s32(-2147483648.0);
19 	/* expect+1: warning: lossy conversion of 3.141 to 'int', arg #1 [380] */
20 	take_s32(3.141);
21 	take_s32(2147483647.0);
22 	/* expect+1: warning: lossy conversion of 2.14748e+09 to 'int', arg #1 [380] */
23 	take_s32(2147483648.0);
24 
25 	/* expect+1: warning: lossy conversion of -1 to 'unsigned int', arg #1 [380] */
26 	take_u32(-1.0);
27 	take_u32(-0.0);
28 	take_u32(0.0);
29 	/* expect+1: warning: lossy conversion of 3.141 to 'unsigned int', arg #1 [380] */
30 	take_u32(3.141);
31 	take_u32(4294967295.0);
32 	/* expect+1: warning: lossy conversion of 4.29497e+09 to 'unsigned int', arg #1 [380] */
33 	take_u32(4294967296.0);
34 
35 	/* expect+1: warning: lossy conversion of -9.22337e+18 to 'long long', arg #1 [380] */
36 	take_s64(-9223372036854776833.0);
37 	/* The constant ...809 is rounded down to ...808, thus no warning. */
38 	take_s64(-9223372036854775809.0);
39 	take_s64(-9223372036854775808.0);
40 	/* expect+1: warning: lossy conversion of 3.141 to 'long long', arg #1 [380] */
41 	take_s64(3.141);
42 	/* expect+1: warning: lossy conversion of 9.22337e+18 to 'long long', arg #1 [380] */
43 	take_s64(9223372036854775807.0);
44 	/* expect+1: warning: lossy conversion of 9.22337e+18 to 'long long', arg #1 [380] */
45 	take_s64(9223372036854775808.0);
46 
47 	/* expect+1: warning: lossy conversion of -1 to 'unsigned long long', arg #1 [380] */
48 	take_u64(-1.0);
49 	take_u64(-0.0);
50 	take_u64(0.0);
51 	/* expect+1: warning: lossy conversion of 3.141 to 'unsigned long long', arg #1 [380] */
52 	take_u64(3.141);
53 
54 	// Warning on:		alpha
55 	// No warning on:	aarch64 aarch64-compat32 arm i386 mips powerpc riscv64 sh3 sparc x86_64
56 	// Unknown:		coldfire hppa ia64 m68000 m68k mips64 mipsn64 or1k powerpc64 riscv32 sparc64 vax
57 	//
58 	// warning: lossy conversion of 1.84467e+19 to 'unsigned long long', arg #1 [380]
59 	//take_u64(18446744073709550591.0);
60 
61 	// Warning on:		aarch64 alpha arm i386 mips riscv64 sparc x86_64
62 	// No warning on:	aarch64-compat32 powerpc sh3
63 	// Unknown:		coldfire hppa ia64 m68000 m68k mips64 mipsn64 or1k powerpc64 riscv32 sparc64 vax
64 	//
65 	// warning: lossy conversion of 1.84467e+19 to 'unsigned long long', arg #1 [380]
66 	//take_u64(18446744073709550592.0);
67 	// warning: lossy conversion of 1.84467e+19 to 'unsigned long long', arg #1 [380]
68 	//take_u64(18446744073709551615.0);
69 	// warning: lossy conversion of 1.84467e+19 to 'unsigned long long', arg #1 [380]
70 	//take_u64(18446744073709551616.0);
71 }
72