lex_integer_ilp32.c revision 1.9
11.9Srillig/*	$NetBSD: lex_integer_ilp32.c,v 1.9 2024/01/28 06:57:41 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.3Srillig/* lint1-only-if: ilp32 */
111.8Srillig/* lint1-extra-flags: -X 351 */
121.1Srillig
131.1Srilligvoid sinki(int);
141.1Srilligvoid sinku(unsigned int);
151.1Srillig
161.1Srillig/* All platforms supported by lint have 32-bit int in two's complement. */
171.1Srilligvoid
181.1Srilligtest_signed_int(void)
191.1Srillig{
201.1Srillig	sinki(0);
211.1Srillig
221.1Srillig	sinki(-1);
231.1Srillig
241.1Srillig	sinki(2147483647);
251.1Srillig
261.9Srillig	/* expect+1: warning: conversion of 'long long' to 'int' is out of range, arg #1 [295] */
271.1Srillig	sinki(2147483648);
281.1Srillig
291.1Srillig	sinki(-2147483647);
301.1Srillig
311.1Srillig	sinki(-2147483648);
321.1Srillig}
331.1Srillig
341.1Srilligvoid
351.1Srilligtest_unsigned_int(void)
361.1Srillig{
371.1Srillig	sinku(0);
381.1Srillig
391.6Srillig	sinku(2147483647);
401.6Srillig	sinku(2147483648);
411.6Srillig
421.6Srillig	sinku(2147483648U);
431.1Srillig	sinku(4294967295U);
441.1Srillig
451.9Srillig	/* expect+1: warning: conversion of 'unsigned long long' to 'unsigned int' is out of range, arg #1 [295] */
461.1Srillig	sinku(4294967296U);
471.1Srillig}
48