lex_integer_ilp32.c revision 1.8
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
13void sinki(int);
14void sinku(unsigned int);
15
16/* All platforms supported by lint have 32-bit int in two's complement. */
17void
18test_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
35void
36test_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