xref: /netbsd-src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c (revision 5357c932abfce44e67c9ba5bdae0bd58daa00a9c)
1*5357c932Srillig /*	$NetBSD: lex_integer_ilp32.c,v 1.9 2024/01/28 06:57:41 rillig Exp $	*/
2b7cb676eSrillig # 3 "lex_integer_ilp32.c"
3b7cb676eSrillig 
4b7cb676eSrillig /*
5b7cb676eSrillig  * Tests for lexical analysis of integer constants.
6b7cb676eSrillig  *
7b7cb676eSrillig  * C99 6.4.4.1 "Integer constants"
8b7cb676eSrillig  */
9b7cb676eSrillig 
10dadd5dc3Srillig /* lint1-only-if: ilp32 */
11b2baa501Srillig /* lint1-extra-flags: -X 351 */
12b7cb676eSrillig 
13b7cb676eSrillig void sinki(int);
14b7cb676eSrillig void sinku(unsigned int);
15b7cb676eSrillig 
16b7cb676eSrillig /* All platforms supported by lint have 32-bit int in two's complement. */
17b7cb676eSrillig void
test_signed_int(void)18b7cb676eSrillig test_signed_int(void)
19b7cb676eSrillig {
20b7cb676eSrillig 	sinki(0);
21b7cb676eSrillig 
22b7cb676eSrillig 	sinki(-1);
23b7cb676eSrillig 
24b7cb676eSrillig 	sinki(2147483647);
25b7cb676eSrillig 
26*5357c932Srillig 	/* expect+1: warning: conversion of 'long long' to 'int' is out of range, arg #1 [295] */
27b7cb676eSrillig 	sinki(2147483648);
28b7cb676eSrillig 
29b7cb676eSrillig 	sinki(-2147483647);
30b7cb676eSrillig 
31b7cb676eSrillig 	sinki(-2147483648);
32b7cb676eSrillig }
33b7cb676eSrillig 
34b7cb676eSrillig void
test_unsigned_int(void)35b7cb676eSrillig test_unsigned_int(void)
36b7cb676eSrillig {
37b7cb676eSrillig 	sinku(0);
38b7cb676eSrillig 
39134e5c5eSrillig 	sinku(2147483647);
40134e5c5eSrillig 	sinku(2147483648);
41134e5c5eSrillig 
42134e5c5eSrillig 	sinku(2147483648U);
43b7cb676eSrillig 	sinku(4294967295U);
44b7cb676eSrillig 
45*5357c932Srillig 	/* expect+1: warning: conversion of 'unsigned long long' to 'unsigned int' is out of range, arg #1 [295] */
46b7cb676eSrillig 	sinku(4294967296U);
47b7cb676eSrillig }
48