lex_integer_ilp32.c revision 1.1
11.1Srillig/*	$NetBSD: lex_integer_ilp32.c,v 1.1 2021/06/29 09:19:17 rillig Exp $	*/
21.1Srillig# 3 "lex_integer_ilp32.c"
31.1Srillig
41.1Srillig/*
51.1Srillig * Tests for lexical analysis of integer constants.
61.1Srillig *
71.1Srillig * C99 6.4.4.1 "Integer constants"
81.1Srillig */
91.1Srillig
101.1Srillig/* lint1-only-on-ilp32 */
111.1Srillig
121.1Srilligvoid sinki(int);
131.1Srilligvoid sinku(unsigned int);
141.1Srillig
151.1Srillig/* All platforms supported by lint have 32-bit int in two's complement. */
161.1Srilligvoid
171.1Srilligtest_signed_int(void)
181.1Srillig{
191.1Srillig	sinki(0);
201.1Srillig
211.1Srillig	sinki(-1);
221.1Srillig
231.1Srillig	sinki(2147483647);
241.1Srillig
251.1Srillig	/* expect+1: 'unsigned long' to 'int' is out of range, arg #1 [295] */
261.1Srillig	sinki(2147483648);
271.1Srillig
281.1Srillig	sinki(-2147483647);
291.1Srillig
301.1Srillig	/* expect+2: ANSI C treats constant as unsigned, op - [218] */
311.1Srillig	/* expect+1: 'unsigned long' to 'int' is out of range, arg #1 [295] */
321.1Srillig	sinki(-2147483648);
331.1Srillig}
341.1Srillig
351.1Srilligvoid
361.1Srilligtest_unsigned_int(void)
371.1Srillig{
381.1Srillig	sinku(0);
391.1Srillig
401.1Srillig	sinku(4294967295U);
411.1Srillig
421.1Srillig	/* expect+1: integer constant out of range [252] */
431.1Srillig	sinku(4294967296U);
441.1Srillig}
45