xref: /netbsd-src/tests/usr.bin/xlint/lint1/platform_ldbl96.c (revision 1603ef6585f2749e804782955756b75415115f1c)
1 /*	$NetBSD: platform_ldbl96.c,v 1.6 2023/07/05 11:42:14 rillig Exp $	*/
2 # 3 "platform_ldbl96.c"
3 
4 /*
5  * Test features that only apply to platforms that have 96-bit long double.
6  */
7 
8 /* lint1-extra-flags: -c -h -a -p -b -r -z -X 351 */
9 /* lint1-only-if: ldbl96 */
10 
11 /* CONSTCOND */
12 typedef int bits_per_byte[((unsigned char)-1) == 255 ? 1 : -1];
13 typedef int bytes_per_long_double[sizeof(long double) == 12 ? 1 : -1];
14 
15 /*
16  * Both i386 and m68k use the same floating point format for 'long double',
17  * which has 1 bit sign + 15 bit exponent + 64 bit unnormalized mantissa.
18  * This means the maximum representable value is 1.1111111(bin) * 2^16383,
19  * which is about 1.189e4932.
20  */
21 /* expect+1: warning: floating-point constant out of range [248] */
22 double larger_than_ldbl = 1e4933;
23 /* expect+1: warning: floating-point constant out of range [248] */
24 long double larger_than_ldbl_l = 1e4933L;
25 /* expect+1: warning: floating-point constant out of range [248] */
26 double larger_than_dbl = 1e4932;
27 /* Fits in 'long double' but not in 'double'. */
28 long double larger_than_dbl_l = 1e4932L;
29