1 1.6 rillig /* $NetBSD: platform_ilp32_int.c,v 1.6 2024/03/10 19:45:14 rillig 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.4 rillig /* expect+1: warning: array subscript cannot be > 19: 16777215 [168] */ 41 1.4 rillig u8 += u8_buf[0x00ffffff]; 42 1.3 rillig /* expect+1: warning: array subscript cannot be > 19: 2147483647 [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.3 rillig /* expect+1: warning: array subscript cannot be negative: -2147483648 [167] */ 46 1.4 rillig u8 += u8_buf[2147483648]; 47 1.3 rillig /* expect+2: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 48 1.3 rillig /* expect+1: warning: array subscript cannot be negative: -2147483648 [167] */ 49 1.4 rillig u8 += u8_buf[0x80000000]; 50 1.3 rillig /* expect+2: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 51 1.3 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 52 1.4 rillig u8 += u8_buf[0xffffffff]; 53 1.4 rillig /* expect+2: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 54 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -2147483648 [167] */ 55 1.4 rillig u8 += u8_buf[0x80000000]; 56 1.4 rillig /* expect+2: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 57 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 58 1.4 rillig u8 += u8_buf[0xffffffff]; 59 1.4 rillig /* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */ 60 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 61 1.4 rillig u8 += u8_buf[0x00ffffffffffffff]; 62 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 63 1.4 rillig u8 += u8_buf[0xffffffffffffffff]; 64 1.4 rillig 65 1.4 rillig /* expect+1: warning: array subscript cannot be > 19: 16777215 [168] */ 66 1.4 rillig u64 += u64_buf[0x00ffffff]; 67 1.6 rillig /* expect+2: warning: '2147483647 * 8' overflows 'int' [141] */ 68 1.5 rillig /* expect+1: warning: array subscript cannot be > 19: 268435455 [168] */ 69 1.4 rillig u64 += u64_buf[0x7fffffff]; 70 1.5 rillig /* expect+3: warning: conversion of 'long long' to 'int' is out of range [119] */ 71 1.6 rillig /* expect+2: warning: '-2147483648 * 8' overflows 'int' [141] */ 72 1.5 rillig /* expect+1: warning: array subscript cannot be negative: -268435456 [167] */ 73 1.4 rillig u64 += u64_buf[2147483648]; 74 1.5 rillig /* expect+3: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 75 1.6 rillig /* expect+2: warning: '-2147483648 * 8' overflows 'int' [141] */ 76 1.5 rillig /* expect+1: warning: array subscript cannot be negative: -268435456 [167] */ 77 1.4 rillig u64 += u64_buf[0x80000000]; 78 1.4 rillig /* expect+2: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 79 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 80 1.4 rillig u64 += u64_buf[0xffffffff]; 81 1.5 rillig /* expect+3: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 82 1.6 rillig /* expect+2: warning: '-2147483648 * 8' overflows 'int' [141] */ 83 1.5 rillig /* expect+1: warning: array subscript cannot be negative: -268435456 [167] */ 84 1.4 rillig u64 += u64_buf[0x80000000]; 85 1.4 rillig /* expect+2: warning: conversion of 'unsigned int' to 'int' is out of range [119] */ 86 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 87 1.4 rillig u64 += u64_buf[0xffffffff]; 88 1.4 rillig /* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */ 89 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 90 1.4 rillig u64 += u64_buf[0x00ffffffffffffff]; 91 1.4 rillig /* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */ 92 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 93 1.4 rillig u64 += u64_buf[0x0fffffffffffffff]; 94 1.4 rillig /* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */ 95 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 96 1.4 rillig u64 += u64_buf[0x1fffffffffffffff]; 97 1.4 rillig /* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */ 98 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 99 1.4 rillig u64 += u64_buf[0x3fffffffffffffff]; 100 1.4 rillig /* expect+2: warning: conversion of 'long long' to 'int' is out of range [119] */ 101 1.4 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 102 1.4 rillig u64 += u64_buf[0x7fffffffffffffff]; 103 1.3 rillig /* expect+1: warning: array subscript cannot be negative: -1 [167] */ 104 1.4 rillig u64 += u64_buf[0xffffffffffffffff]; 105 1.3 rillig } 106