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