Home | History | Annotate | Line # | Download | only in lint1
platform_ilp32_int.c revision 1.8.2.1
      1  1.8.2.1  perseant /*	$NetBSD: platform_ilp32_int.c,v 1.8.2.1 2025/08/02 05:58:19 perseant Exp $	*/
      2      1.1    rillig # 3 "platform_ilp32_int.c"
      3      1.1    rillig 
      4      1.1    rillig /*
      5      1.1    rillig  * Test features that only apply to platforms that have 32-bit int, long and
      6      1.1    rillig  * pointer types and where size_t is unsigned int, not unsigned long.
      7      1.1    rillig  */
      8      1.1    rillig 
      9      1.1    rillig /* lint1-only-if: ilp32 int */
     10      1.2    rillig /* lint1-extra-flags: -c -h -a -p -b -r -z -X 351 */
     11      1.1    rillig 
     12      1.1    rillig int s32;
     13      1.1    rillig unsigned int u32;
     14      1.1    rillig long sl32;
     15      1.1    rillig unsigned long ul32;
     16      1.1    rillig 
     17      1.1    rillig void
     18      1.1    rillig convert_between_int_and_long(void)
     19      1.1    rillig {
     20      1.1    rillig 	/*
     21      1.1    rillig 	 * No warning about possible loss of accuracy, as the types have the
     22      1.1    rillig 	 * same size, both in target platform mode as well as in portable
     23      1.1    rillig 	 * mode.
     24      1.1    rillig 	 */
     25      1.1    rillig 	s32 = sl32;
     26      1.1    rillig 	sl32 = s32;
     27      1.1    rillig 	u32 = ul32;
     28      1.1    rillig 	ul32 = u32;
     29      1.1    rillig }
     30      1.3    rillig 
     31      1.4    rillig unsigned char u8;
     32      1.4    rillig unsigned long long u64;
     33      1.4    rillig unsigned char u8_buf[20];
     34      1.4    rillig unsigned long long u64_buf[20];
     35      1.3    rillig 
     36      1.3    rillig void
     37      1.3    rillig array_index(void)
     38      1.3    rillig {
     39      1.3    rillig 
     40      1.7    rillig 	/* expect+1: warning: array subscript 16777215 cannot be > 19 [168] */
     41      1.4    rillig 	u8 += u8_buf[0x00ffffff];
     42      1.7    rillig 	/* expect+1: warning: array subscript 2147483647 cannot be > 19 [168] */
     43      1.4    rillig 	u8 += u8_buf[0x7fffffff];
     44      1.3    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     45      1.7    rillig 	/* expect+1: warning: array subscript -2147483648 cannot be negative [167] */
     46      1.4    rillig 	u8 += u8_buf[2147483648];
     47      1.8    rillig 	/* expect+1: warning: array subscript 2147483648 cannot be > 19 [168] */
     48      1.4    rillig 	u8 += u8_buf[0x80000000];
     49      1.8    rillig 	/* expect+1: warning: array subscript 4294967295 cannot be > 19 [168] */
     50      1.4    rillig 	u8 += u8_buf[0xffffffff];
     51      1.8    rillig 	/* expect+1: warning: array subscript 2147483648 cannot be > 19 [168] */
     52      1.4    rillig 	u8 += u8_buf[0x80000000];
     53      1.8    rillig 	/* expect+1: warning: array subscript 4294967295 cannot be > 19 [168] */
     54      1.4    rillig 	u8 += u8_buf[0xffffffff];
     55      1.4    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     56      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     57      1.4    rillig 	u8 += u8_buf[0x00ffffffffffffff];
     58      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     59      1.4    rillig 	u8 += u8_buf[0xffffffffffffffff];
     60      1.4    rillig 
     61      1.7    rillig 	/* expect+1: warning: array subscript 16777215 cannot be > 19 [168] */
     62      1.4    rillig 	u64 += u64_buf[0x00ffffff];
     63      1.6    rillig 	/* expect+2: warning: '2147483647 * 8' overflows 'int' [141] */
     64      1.7    rillig 	/* expect+1: warning: array subscript 268435455 cannot be > 19 [168] */
     65      1.4    rillig 	u64 += u64_buf[0x7fffffff];
     66      1.5    rillig 	/* expect+3: warning: conversion of 'long long' to 'int' is out of range [119] */
     67      1.6    rillig 	/* expect+2: warning: '-2147483648 * 8' overflows 'int' [141] */
     68      1.7    rillig 	/* expect+1: warning: array subscript -268435456 cannot be negative [167] */
     69      1.4    rillig 	u64 += u64_buf[2147483648];
     70      1.8    rillig 	/* expect+1: warning: '2147483648 * 8' overflows 'unsigned int' [141] */
     71      1.4    rillig 	u64 += u64_buf[0x80000000];
     72      1.8    rillig 	/* expect+2: warning: '4294967295 * 8' overflows 'unsigned int' [141] */
     73      1.8    rillig 	/* expect+1: warning: array subscript 536870911 cannot be > 19 [168] */
     74      1.4    rillig 	u64 += u64_buf[0xffffffff];
     75      1.8    rillig 	/* expect+1: warning: '2147483648 * 8' overflows 'unsigned int' [141] */
     76      1.4    rillig 	u64 += u64_buf[0x80000000];
     77      1.8    rillig 	/* expect+2: warning: '4294967295 * 8' overflows 'unsigned int' [141] */
     78      1.8    rillig 	/* expect+1: warning: array subscript 536870911 cannot be > 19 [168] */
     79      1.4    rillig 	u64 += u64_buf[0xffffffff];
     80      1.4    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     81      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     82      1.4    rillig 	u64 += u64_buf[0x00ffffffffffffff];
     83      1.4    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     84      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     85      1.4    rillig 	u64 += u64_buf[0x0fffffffffffffff];
     86      1.4    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     87      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     88      1.4    rillig 	u64 += u64_buf[0x1fffffffffffffff];
     89      1.4    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     90      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     91      1.4    rillig 	u64 += u64_buf[0x3fffffffffffffff];
     92      1.4    rillig 	/* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */
     93      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     94      1.4    rillig 	u64 += u64_buf[0x7fffffffffffffff];
     95      1.7    rillig 	/* expect+1: warning: array subscript -1 cannot be negative [167] */
     96      1.4    rillig 	u64 += u64_buf[0xffffffffffffffff];
     97      1.3    rillig }
     98  1.8.2.1  perseant 
     99  1.8.2.1  perseant 
    100  1.8.2.1  perseant extern const unsigned short *_ctype_tab_;
    101  1.8.2.1  perseant 
    102  1.8.2.1  perseant int
    103  1.8.2.1  perseant msg_341(void)
    104  1.8.2.1  perseant {
    105  1.8.2.1  perseant 	// https://mail-index.netbsd.org/current-users/2024/12/15/msg045888.html
    106  1.8.2.1  perseant 	/* expect+2: warning: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'unsigned int' [341] */
    107  1.8.2.1  perseant 	/* expect+1: warning: '4294967295 * 2' overflows 'unsigned int' [141] */
    108  1.8.2.1  perseant 	return (((int)((_ctype_tab_ + 1)[(0xffffffffu)])));
    109  1.8.2.1  perseant 
    110  1.8.2.1  perseant }
    111