1*8910413eSrillig /* $NetBSD: msg_141.c,v 1.17 2024/03/27 20:09:43 rillig Exp $ */ 2a0a15c14Srillig # 3 "msg_141.c" 3a0a15c14Srillig 4dd848decSrillig // Test for message: '%s' overflows '%s' [141] 5a0a15c14Srillig 6b2baa501Srillig /* lint1-extra-flags: -h -X 351 */ 7bc15589aSrillig 816f849b6Srillig // Integer overflow occurs when the arbitrary-precision result of an 916f849b6Srillig // arithmetic operation cannot be represented by the type of the expression. 10bc15589aSrillig 1116f849b6Srillig signed int s32; 1216f849b6Srillig unsigned int u32; 1316f849b6Srillig signed long long s64; 1416f849b6Srillig unsigned long long u64; 15*8910413eSrillig _Bool cond; 16bc15589aSrillig 1716f849b6Srillig void compl_s32(void)1816f849b6Srilligcompl_s32(void) 1916f849b6Srillig { 2016f849b6Srillig s32 = ~(-0x7fffffff - 1); 2116f849b6Srillig s32 = ~-1; 2216f849b6Srillig s32 = ~0; 2316f849b6Srillig s32 = ~1; 2416f849b6Srillig s32 = ~0x7fffffff; 2516f849b6Srillig } 26bc15589aSrillig 2716f849b6Srillig void compl_u32(void)2816f849b6Srilligcompl_u32(void) 2916f849b6Srillig { 3016f849b6Srillig u32 = ~0x00000000U; 3116f849b6Srillig u32 = ~0x7fffffffU; 3216f849b6Srillig u32 = ~0x80000000U; 3316f849b6Srillig u32 = ~0xffffffffU; 3416f849b6Srillig } 35bc15589aSrillig 3616f849b6Srillig void compl_s64(void)3716f849b6Srilligcompl_s64(void) 3816f849b6Srillig { 3916f849b6Srillig s64 = ~(-0x7fffffffffffffffLL - 1LL); 4016f849b6Srillig s64 = ~-1LL; 4116f849b6Srillig s64 = ~0LL; 4216f849b6Srillig s64 = ~0x7fffffffffffffffLL; 4316f849b6Srillig } 4422fd140dSrillig 4516f849b6Srillig void compl_u64(void)4616f849b6Srilligcompl_u64(void) 4716f849b6Srillig { 4816f849b6Srillig u64 = ~0ULL; 4916f849b6Srillig u64 = ~0x7fffffffffffffffULL; 5016f849b6Srillig u64 = ~0x8000000000000000ULL; 5116f849b6Srillig u64 = ~0xffffffffffffffffULL; 5216f849b6Srillig } 5316f849b6Srillig 5416f849b6Srillig void uplus_s32(void)5516f849b6Srilliguplus_s32(void) 5616f849b6Srillig { 5716f849b6Srillig s32 = +(-0x7fffffff - 1); 5816f849b6Srillig s32 = +-1; 5916f849b6Srillig s32 = +0; 6016f849b6Srillig s32 = +0x7fffffff; 6116f849b6Srillig } 6216f849b6Srillig 6316f849b6Srillig void uplus_u32(void)6416f849b6Srilliguplus_u32(void) 6516f849b6Srillig { 6616f849b6Srillig u32 = +0x00000000U; 6716f849b6Srillig u32 = +0x7fffffffU; 6816f849b6Srillig u32 = +0x80000000U; 6916f849b6Srillig u32 = +0xffffffffU; 7016f849b6Srillig } 7116f849b6Srillig 7216f849b6Srillig void uplus_s64(void)7316f849b6Srilliguplus_s64(void) 7416f849b6Srillig { 7516f849b6Srillig s64 = +(-0x7fffffffffffffffLL - 1LL); 7616f849b6Srillig s64 = +-1LL; 7716f849b6Srillig s64 = +0LL; 7816f849b6Srillig s64 = +0x7fffffffffffffffLL; 7916f849b6Srillig } 8016f849b6Srillig 8116f849b6Srillig void uplus_u64(void)8216f849b6Srilliguplus_u64(void) 8316f849b6Srillig { 8416f849b6Srillig u64 = +0x0000000000000000ULL; 8516f849b6Srillig u64 = +0x7fffffffffffffffULL; 8616f849b6Srillig u64 = +0x8000000000000000ULL; 8716f849b6Srillig u64 = +0xffffffffffffffffULL; 8816f849b6Srillig } 8916f849b6Srillig 9016f849b6Srillig void uminus_s32(void)9116f849b6Srilliguminus_s32(void) 9216f849b6Srillig { 93dd848decSrillig /* expect+1: warning: '-(-2147483648)' overflows 'int' [141] */ 9416f849b6Srillig s32 = -(-0x7fffffff - 1); 9516f849b6Srillig s32 = - -1; 9616f849b6Srillig s32 = -0; 9716f849b6Srillig s32 = -0x7fffffff; 9816f849b6Srillig } 9922fd140dSrillig 10016f849b6Srillig void uminus_u32(void)10116f849b6Srilliguminus_u32(void) 10216f849b6Srillig { 10316f849b6Srillig u32 = -0x00000000U; 10416f849b6Srillig u32 = -0x7fffffffU; 10516f849b6Srillig u32 = -0x80000000U; 10616f849b6Srillig u32 = -0xffffffffU; 10716f849b6Srillig } 108cc3c7d5bSrillig 10916f849b6Srillig void uminus_s64(void)11016f849b6Srilliguminus_s64(void) 11116f849b6Srillig { 112dd848decSrillig /* expect+1: warning: '-(-9223372036854775808)' overflows 'long long' [141] */ 11316f849b6Srillig s64 = -(-0x7fffffffffffffffLL - 1LL); 11416f849b6Srillig s64 = - -1LL; 11516f849b6Srillig s64 = -0LL; 11616f849b6Srillig s64 = -0x7fffffffffffffffLL; 11716f849b6Srillig } 11816f849b6Srillig 11916f849b6Srillig void uminus_u64(void)12016f849b6Srilliguminus_u64(void) 12116f849b6Srillig { 12216f849b6Srillig u64 = -0x0000000000000000ULL; 12316f849b6Srillig u64 = -0x7fffffffffffffffULL; 12416f849b6Srillig u64 = -0x8000000000000000ULL; 12516f849b6Srillig u64 = -0xffffffffffffffffULL; 12616f849b6Srillig } 127cc3c7d5bSrillig 12816f849b6Srillig void mult_s32(void)12916f849b6Srilligmult_s32(void) 13016f849b6Srillig { 131dd848decSrillig /* expect+1: warning: '-65536 * 65536' overflows 'int' [141] */ 13216f849b6Srillig s32 = -0x00010000 * +0x00010000; // -0x0100000000 133dd848decSrillig /* expect+1: warning: '-3 * 715827883' overflows 'int' [141] */ 13416f849b6Srillig s32 = -0x00000003 * +0x2aaaaaab; // -0x80000001 135dd848decSrillig /* expect+1: warning: '715827883 * -3' overflows 'int' [141] */ 13616f849b6Srillig s32 = +0x2aaaaaab * -0x00000003; // -0x80000001 13716f849b6Srillig s32 = -0x00000008 * +0x10000000; // -0x80000000 13816f849b6Srillig s32 = +0x10000000 * -0x00000008; // -0x80000000 13916f849b6Srillig s32 = +0x00000002 * +0x3fffffff; // +0x7ffffffe 14016f849b6Srillig s32 = +0x3fffffff * +0x00000002; // +0x7ffffffe 14116f849b6Srillig s32 = +0x7fffffff * +0x00000001; // +0x7fffffff 14216f849b6Srillig s32 = +0x00000001 * +0x7fffffff; // +0x7fffffff 143dd848decSrillig /* expect+1: warning: '2 * 1073741824' overflows 'int' [141] */ 14416f849b6Srillig s32 = +0x00000002 * +0x40000000; // +0x80000000 145dd848decSrillig /* expect+1: warning: '1073741824 * 2' overflows 'int' [141] */ 14616f849b6Srillig s32 = +0x40000000 * +0x00000002; // +0x80000000 147dd848decSrillig /* expect+1: warning: '65535 * 65537' overflows 'int' [141] */ 14816f849b6Srillig s32 = +0x0000ffff * +0x00010001; // +0xffffffff 149dd848decSrillig /* expect+1: warning: '65536 * 65536' overflows 'int' [141] */ 15016f849b6Srillig s32 = +0x00010000 * +0x00010000; // +0x0100000000 15116f849b6Srillig } 15216f849b6Srillig 15316f849b6Srillig void mult_u32(void)15416f849b6Srilligmult_u32(void) 15516f849b6Srillig { 15616f849b6Srillig u32 = 0xffffU * 0x10001U; // +0xffffffff 157dd848decSrillig /* expect+1: warning: '65536 * 65536' overflows 'unsigned int' [141] */ 15816f849b6Srillig u32 = 0x10000U * 0x10000U; // +0x0100000000 15916f849b6Srillig } 16016f849b6Srillig 16116f849b6Srillig void mult_s64(void)16216f849b6Srilligmult_s64(void) 16316f849b6Srillig { 164dd848decSrillig /* expect+1: warning: '-4294967296 * 4294967296' overflows 'long long' [141] */ 16534885a59Srillig s64 = -0x100000000LL * 0x100000000LL; // -0x010000000000000000 166dd848decSrillig /* expect+1: warning: '-3 * 3074457345618258603' overflows 'long long' [141] */ 16734885a59Srillig s64 = -3LL * 0x2aaaaaaaaaaaaaabLL; // -0x8000000000000001 168dd848decSrillig /* expect+1: warning: '3074457345618258603 * -3' overflows 'long long' [141] */ 16934885a59Srillig s64 = 0x2aaaaaaaaaaaaaabLL * -3LL; // -0x8000000000000001 17016f849b6Srillig s64 = -8LL * +0x1000000000000000LL; // -0x8000000000000000 17116f849b6Srillig s64 = +0x1000000000000000LL * -8LL; // -0x8000000000000000 17216f849b6Srillig s64 = +2LL * +0x3fffffffffffffffLL; // +0x7ffffffffffffffe 17316f849b6Srillig s64 = +0x3fffffffffffffffLL * +2LL; // +0x7ffffffffffffffe 17416f849b6Srillig s64 = +0x7fffffffffffffffLL * +1LL; // +0x7fffffffffffffff 17516f849b6Srillig s64 = +1LL * +0x7fffffffffffffffLL; // +0x7fffffffffffffff 176dd848decSrillig /* expect+1: warning: '2 * 4611686018427387904' overflows 'long long' [141] */ 17734885a59Srillig s64 = +2LL * +0x4000000000000000LL; // +0x8000000000000000 178dd848decSrillig /* expect+1: warning: '4611686018427387904 * 2' overflows 'long long' [141] */ 17934885a59Srillig s64 = +0x4000000000000000LL * +2LL; // +0x8000000000000000 180dd848decSrillig /* expect+1: warning: '4294967295 * 4294967297' overflows 'long long' [141] */ 18134885a59Srillig s64 = +0xffffffffLL * +0x100000001LL; // +0xffffffffffffffff 182dd848decSrillig /* expect+1: warning: '4294967296 * 4294967296' overflows 'long long' [141] */ 18334885a59Srillig s64 = +0x100000000LL * +0x100000000LL; // +0x010000000000000000 18416f849b6Srillig } 185cc3c7d5bSrillig 18616f849b6Srillig void mult_u64(void)18716f849b6Srilligmult_u64(void) 18816f849b6Srillig { 18916f849b6Srillig u64 = 0xffffffffULL * 0x100000001ULL; // +0xffffffffffffffff 19016f849b6Srillig u64 = 0x00010000ULL * 0x00010000ULL; // +0x0100000000 191dd848decSrillig /* expect+1: warning: '4294967296 * 4294967296' overflows 'unsigned long long' [141] */ 19216f849b6Srillig u64 = 0x100000000ULL * 0x100000000ULL; // +0x010000000000000000 19316f849b6Srillig } 194cc3c7d5bSrillig 19516f849b6Srillig void div_s32(void)19616f849b6Srilligdiv_s32(void) 19716f849b6Srillig { 198dd848decSrillig /* expect+1: warning: '-2147483648 / -1' overflows 'int' [141] */ 19916f849b6Srillig s32 = (-0x7fffffff - 1) / -1; 20016f849b6Srillig s32 = (-0x7fffffff - 1) / 1; 20116f849b6Srillig s32 = 0x7fffffff / -1; 20216f849b6Srillig /* expect+1: error: division by 0 [139] */ 20316f849b6Srillig s32 = 0 / 0; 20416f849b6Srillig /* expect+1: error: division by 0 [139] */ 20516f849b6Srillig s32 = 0x7fffffff / 0; 20616f849b6Srillig } 207cc3c7d5bSrillig 20816f849b6Srillig void div_u32(void)20916f849b6Srilligdiv_u32(void) 21016f849b6Srillig { 21116f849b6Srillig u32 = 0xffffffffU / -1U; 21216f849b6Srillig u32 = 0xffffffffU / 1U; 21316f849b6Srillig /* expect+1: error: division by 0 [139] */ 21416f849b6Srillig u32 = 0U / 0U; 21516f849b6Srillig /* expect+1: error: division by 0 [139] */ 21616f849b6Srillig u32 = 0xffffffffU / 0U; 21716f849b6Srillig } 218cc3c7d5bSrillig 21916f849b6Srillig void div_s64(void)22016f849b6Srilligdiv_s64(void) 22116f849b6Srillig { 222dd848decSrillig /* expect+1: warning: '-9223372036854775808 / -1' overflows 'long long' [141] */ 22316f849b6Srillig s64 = (-0x7fffffffffffffffLL - 1LL) / -1LL; 22416f849b6Srillig s64 = (-0x7fffffffffffffffLL - 1LL) / 1LL; 22516f849b6Srillig s64 = (-0x7fffffffffffffffLL - 1LL) / 0x7fffffffffffffffLL; 22616f849b6Srillig s64 = 0x7fffffffffffffffLL / -1LL; 22716f849b6Srillig s64 = (-0x7fffffffLL - 1LL) / -1LL; 22816f849b6Srillig s64 = (-0x7fffffffLL - 1LL) / 0x7fffffffLL; 22916f849b6Srillig /* expect+1: error: division by 0 [139] */ 23016f849b6Srillig s64 = 0LL / 0LL; 23116f849b6Srillig /* expect+1: error: division by 0 [139] */ 23216f849b6Srillig s64 = 0x7fffffffffffffffLL / 0LL; 23316f849b6Srillig } 234cc3c7d5bSrillig 23516f849b6Srillig void div_u64(void)23616f849b6Srilligdiv_u64(void) 23716f849b6Srillig { 23816f849b6Srillig u64 = 0xffffffffffffffffULL / -1ULL; 23916f849b6Srillig u64 = 0xffffffffffffffffULL / 1ULL; 24016f849b6Srillig /* expect+1: error: division by 0 [139] */ 24116f849b6Srillig u64 = 0ULL / 0ULL; 24216f849b6Srillig /* expect+1: error: division by 0 [139] */ 24316f849b6Srillig u64 = 0xffffffffffffffffULL / 0ULL; 24416f849b6Srillig } 245cc3c7d5bSrillig 24616f849b6Srillig void mod_s32(void)24716f849b6Srilligmod_s32(void) 24816f849b6Srillig { 24916f849b6Srillig s32 = -1 % (-0x7fffffff - 1); 25016f849b6Srillig s32 = -1 % 0x7fffffff; 251dd848decSrillig /* expect+1: warning: '-2147483648 % -1' overflows 'int' [141] */ 25216f849b6Srillig s32 = (-0x7fffffff - 1) % -1; 25316f849b6Srillig s32 = 0x7fffffff % -1; 25416f849b6Srillig } 255cc3c7d5bSrillig 25616f849b6Srillig void mod_u32(void)25716f849b6Srilligmod_u32(void) 25816f849b6Srillig { 25916f849b6Srillig u64 = 0xffffffffU % -1U; 26016f849b6Srillig u64 = 0xffffffffU % 1U; 26116f849b6Srillig /* expect+1: error: modulus by 0 [140] */ 26216f849b6Srillig u64 = 0U % 0U; 26316f849b6Srillig /* expect+1: error: modulus by 0 [140] */ 26416f849b6Srillig u64 = 0xffffffffU % 0U; 26516f849b6Srillig } 266cc3c7d5bSrillig 26716f849b6Srillig void mod_s64(void)26816f849b6Srilligmod_s64(void) 26916f849b6Srillig { 27016f849b6Srillig s64 = -1LL % (-0x7fffffffffffffffLL - 1LL); 27116f849b6Srillig s64 = -1LL % 0x7fffffffffffffffLL; 272dd848decSrillig /* expect+1: warning: '-9223372036854775808 % -1' overflows 'long long' [141] */ 27334885a59Srillig s64 = (-0x7fffffffffffffffLL - 1LL) % -1LL; 27416f849b6Srillig s64 = 0x7fffffffffffffffLL % -1LL; 27516f849b6Srillig } 27616f849b6Srillig 27716f849b6Srillig void mod_u64(void)27816f849b6Srilligmod_u64(void) 27916f849b6Srillig { 28016f849b6Srillig u64 = 0xffffffffffffffffULL % -1ULL; 28116f849b6Srillig u64 = 0xffffffffffffffffULL % 1ULL; 28216f849b6Srillig /* expect+1: error: modulus by 0 [140] */ 28316f849b6Srillig u64 = 0ULL % 0ULL; 28416f849b6Srillig /* expect+1: error: modulus by 0 [140] */ 28516f849b6Srillig u64 = 0xffffffffffffffffULL % 0ULL; 28616f849b6Srillig } 28716f849b6Srillig 28816f849b6Srillig void plus_s32(void)28916f849b6Srilligplus_s32(void) 29016f849b6Srillig { 291dd848decSrillig /* expect+1: warning: '-2147483647 + -2147483647' overflows 'int' [141] */ 29216f849b6Srillig s32 = -0x7fffffff + -0x7fffffff; 293dd848decSrillig /* expect+1: warning: '-2147483647 + -2' overflows 'int' [141] */ 29416f849b6Srillig s32 = -0x7fffffff + -2; // INT_MIN - 1 295dd848decSrillig /* expect+1: warning: '-2 + -2147483647' overflows 'int' [141] */ 29616f849b6Srillig s32 = -2 + -0x7fffffff; // INT_MIN - 1 29716f849b6Srillig s32 = -0x7fffffff + -1; // INT_MIN 29816f849b6Srillig s32 = -1 + -0x7fffffff; // INT_MIN 29916f849b6Srillig s32 = -0x7fffffff + 0; // INT_MIN + 1 30016f849b6Srillig s32 = 0 + -0x7fffffff; // INT_MIN + 1 30116f849b6Srillig s32 = (-0x7fffffff - 1) + 0x7fffffff; // -1 30216f849b6Srillig s32 = 0x7fffffff + (-0x7fffffff - 1); // -1 30316f849b6Srillig s32 = 0x7ffffffe + 1; // INT_MAX 30416f849b6Srillig s32 = 1 + 0x7ffffffe; // INT_MAX 30516f849b6Srillig s32 = 0x7fffffff + 0; // INT_MAX 30616f849b6Srillig s32 = 0 + 0x7fffffff; // INT_MAX 307dd848decSrillig /* expect+1: warning: '2147483647 + 1' overflows 'int' [141] */ 30816f849b6Srillig s32 = 0x7fffffff + 1; // INT_MAX + 1 309dd848decSrillig /* expect+1: warning: '1 + 2147483647' overflows 'int' [141] */ 31016f849b6Srillig s32 = 1 + 0x7fffffff; // INT_MAX + 1 311dd848decSrillig /* expect+1: warning: '1073741824 + 1073741824' overflows 'int' [141] */ 31216f849b6Srillig s32 = 0x40000000 + 0x40000000; // INT_MAX + 1 313dd848decSrillig /* expect+1: warning: '2147483647 + 2147483647' overflows 'int' [141] */ 31416f849b6Srillig s32 = 0x7fffffff + 0x7fffffff; 31516f849b6Srillig } 31616f849b6Srillig 31716f849b6Srillig void plus_u32(void)31816f849b6Srilligplus_u32(void) 31916f849b6Srillig { 32016f849b6Srillig u32 = 0x00000000U + 0x00000000U; 32116f849b6Srillig u32 = 0x40000000U + 0x40000000U; 32216f849b6Srillig u32 = 0xffffffffU + 0x00000000U; 32316f849b6Srillig u32 = 0x00000000U + 0xffffffffU; 32416f849b6Srillig u32 = 0xfffffffeU + 0x00000001U; 325dd848decSrillig /* expect+1: warning: '4294967295 + 1' overflows 'unsigned int' [141] */ 32616f849b6Srillig u32 = 0xffffffffU + 0x00000001U; 327dd848decSrillig /* expect+1: warning: '1 + 4294967295' overflows 'unsigned int' [141] */ 32816f849b6Srillig u32 = 0x00000001U + 0xffffffffU; 329dd848decSrillig /* expect+1: warning: '4294967295 + 4294967295' overflows 'unsigned int' [141] */ 33016f849b6Srillig u32 = 0xffffffffU + 0xffffffffU; 33116f849b6Srillig } 33216f849b6Srillig 33316f849b6Srillig void plus_s64(void)33416f849b6Srilligplus_s64(void) 33516f849b6Srillig { 336dd848decSrillig /* expect+1: warning: '-9223372036854775807 + -2' overflows 'long long' [141] */ 33734885a59Srillig s64 = -0x7fffffffffffffffLL + -2LL; 33816f849b6Srillig s64 = -0x7fffffffffffffffLL + -1LL; 33916f849b6Srillig s64 = 0x7ffffffffffffffeLL + 1LL; 340dd848decSrillig /* expect+1: warning: '9223372036854775807 + 1' overflows 'long long' [141] */ 34134885a59Srillig s64 = 0x7fffffffffffffffLL + 1LL; 34216f849b6Srillig } 34316f849b6Srillig 34416f849b6Srillig void plus_u64(void)34516f849b6Srilligplus_u64(void) 34616f849b6Srillig { 34716f849b6Srillig u64 = 0x0000000000000000ULL + 0x0000000000000000ULL; 34816f849b6Srillig u64 = 0xffffffffffffffffULL + 0x0000000000000000ULL; 34916f849b6Srillig u64 = 0x0000000000000000ULL + 0xffffffffffffffffULL; 35016f849b6Srillig u64 = 0xfffffffffffffffeULL + 0x0000000000000001ULL; 351dd848decSrillig /* expect+1: warning: '18446744073709551615 + 1' overflows 'unsigned long long' [141] */ 35216f849b6Srillig u64 = 0xffffffffffffffffULL + 0x0000000000000001ULL; 353dd848decSrillig /* expect+1: warning: '1 + 18446744073709551615' overflows 'unsigned long long' [141] */ 35416f849b6Srillig u64 = 0x0000000000000001ULL + 0xffffffffffffffffULL; 355dd848decSrillig /* expect+1: warning: '18446744073709551615 + 18446744073709551615' overflows 'unsigned long long' [141] */ 35616f849b6Srillig u64 = 0xffffffffffffffffULL + 0xffffffffffffffffULL; 35716f849b6Srillig } 35816f849b6Srillig 35916f849b6Srillig void minus_s32(void)36016f849b6Srilligminus_s32(void) 36116f849b6Srillig { 362dd848decSrillig /* expect+1: warning: '-2147483647 - 2' overflows 'int' [141] */ 36316f849b6Srillig s32 = -0x7fffffff - 2; 36416f849b6Srillig s32 = -0x7fffffff - 1; 36516f849b6Srillig s32 = -0x7fffffff - 1 - 0; 36616f849b6Srillig s32 = -0x7fffffff - 1 - -1; 36716f849b6Srillig s32 = 0x7fffffff - 0x7fffffff; 36816f849b6Srillig s32 = 0x7fffffff - 1; 36916f849b6Srillig s32 = 0x7fffffff - 0; 370dd848decSrillig /* expect+1: warning: '2147483647 - -1' overflows 'int' [141] */ 37116f849b6Srillig s32 = 0x7fffffff - -1; 37216f849b6Srillig } 373cc3c7d5bSrillig 37416f849b6Srillig void minus_u32(void)37516f849b6Srilligminus_u32(void) 37616f849b6Srillig { 37716f849b6Srillig u32 = 0x00000000U - 0x00000000U; 378dd848decSrillig /* expect+1: warning: '0 - 1' overflows 'unsigned int' [141] */ 37916f849b6Srillig u32 = 0x00000000U - 0x00000001U; 380dd848decSrillig /* expect+1: warning: '0 - 2147483648' overflows 'unsigned int' [141] */ 38116f849b6Srillig u32 = 0x00000000U - 0x80000000U; 38216f849b6Srillig u32 = 0x80000000U - 0x00000001U; 383dd848decSrillig /* expect+1: warning: '0 - 4294967295' overflows 'unsigned int' [141] */ 38416f849b6Srillig u32 = 0x00000000U - 0xffffffffU; 38516f849b6Srillig u32 = 0xffffffffU - 0x00000000U; 38616f849b6Srillig u32 = 0xffffffffU - 0xffffffffU; 38716f849b6Srillig } 388cc3c7d5bSrillig 38916f849b6Srillig void minus_s64(void)39016f849b6Srilligminus_s64(void) 39116f849b6Srillig { 392dd848decSrillig /* expect+1: warning: '-9223372036854775807 - 9223372036854775807' overflows 'long long' [141] */ 39334885a59Srillig s64 = -0x7fffffffffffffffLL - 0x7fffffffffffffffLL; 394dd848decSrillig /* expect+1: warning: '-9223372036854775807 - 2' overflows 'long long' [141] */ 39534885a59Srillig s64 = -0x7fffffffffffffffLL - 2LL; 39616f849b6Srillig s64 = -0x7fffffffffffffffLL - 1LL; 39716f849b6Srillig s64 = -0x7fffffffffffffffLL - 0LL; 39816f849b6Srillig s64 = -0x7fffffffffffffffLL - -1LL; 39916f849b6Srillig s64 = 0x7fffffffffffffffLL - 1LL; 40016f849b6Srillig s64 = 0x7fffffffffffffffLL - 0LL; 401dd848decSrillig /* expect+1: warning: '9223372036854775807 - -1' overflows 'long long' [141] */ 40234885a59Srillig s64 = 0x7fffffffffffffffLL - -1LL; 403dd848decSrillig /* expect+1: warning: '9223372036854775807 - -9223372036854775807' overflows 'long long' [141] */ 40434885a59Srillig s64 = 0x7fffffffffffffffLL - -0x7fffffffffffffffLL; 40516f849b6Srillig } 40616f849b6Srillig 40716f849b6Srillig void minus_u64(void)40816f849b6Srilligminus_u64(void) 40916f849b6Srillig { 410*8910413eSrillig u64 = 0x0000000000000000ULL - 0x0000000000000000ULL; 411*8910413eSrillig /* expect+1: warning: '0 - 1' overflows 'unsigned long long' [141] */ 412*8910413eSrillig u64 = 0x0000000000000000ULL - 0x0000000000000001ULL; 413*8910413eSrillig /* expect+1: warning: '0 - 9223372036854775808' overflows 'unsigned long long' [141] */ 414*8910413eSrillig u64 = 0x0000000000000000ULL - 0x8000000000000000ULL; 415*8910413eSrillig u64 = 0x8000000000000000ULL - 0x0000000000000001ULL; 416*8910413eSrillig /* expect+1: warning: '0 - 18446744073709551615' overflows 'unsigned long long' [141] */ 417*8910413eSrillig u64 = 0x0000000000000000ULL - 0xffffffffffffffffULL; 418*8910413eSrillig u64 = 0xffffffffffffffffULL - 0x0000000000000000ULL; 419*8910413eSrillig u64 = 0xffffffffffffffffULL - 0xffffffffffffffffULL; 42016f849b6Srillig } 42116f849b6Srillig 42216f849b6Srillig void shl_s32(void)42316f849b6Srilligshl_s32(void) 42416f849b6Srillig { 425dd848decSrillig /* expect+1: warning: '256 << 23' overflows 'int' [141] */ 42616f849b6Srillig s32 = 0x0100 << 23; 427dd848decSrillig /* expect+1: warning: '256 << 24' overflows 'int' [141] */ 42816f849b6Srillig s32 = 0x0100 << 24; 42916f849b6Srillig /* expect+1: warning: shift amount 18446744073709551615 is greater than bit-size 32 of 'int' [122] */ 43016f849b6Srillig s32 = 0 << 0xffffffffffffffff; 43116f849b6Srillig } 432cc3c7d5bSrillig 43316f849b6Srillig void shl_u32(void)43416f849b6Srilligshl_u32(void) 43516f849b6Srillig { 43616f849b6Srillig u32 = 0x0100U << 23; 437dd848decSrillig /* expect+1: warning: '256 << 24' overflows 'unsigned int' [141] */ 43816f849b6Srillig u32 = 0x0100U << 24; 43916f849b6Srillig /* expect+1: warning: negative shift [121] */ 44016f849b6Srillig u32 = 0x0000U << -1; 44116f849b6Srillig /* expect+1: warning: shift amount 256 is greater than bit-size 32 of 'unsigned int' [122] */ 44216f849b6Srillig u32 = 0x0100U << 0x0100U; 44316f849b6Srillig /* expect+1: warning: shift amount 4294967295 is greater than bit-size 32 of 'unsigned int' [122] */ 44416f849b6Srillig u32 = 0x0100U << 0xffffffffU; 44516f849b6Srillig /* expect+1: warning: shift amount 18446744073709551615 is greater than bit-size 32 of 'unsigned int' [122] */ 44616f849b6Srillig u32 = 0x0100U << 0xffffffffffffffffULL; 44716f849b6Srillig } 448cc3c7d5bSrillig 44916f849b6Srillig void shl_s64(void)45016f849b6Srilligshl_s64(void) 45116f849b6Srillig { 452*8910413eSrillig s64 = 1LL << 62; 453*8910413eSrillig s64 = 1LL << 63; 454*8910413eSrillig /* expect+1: warning: shift amount 64 equals bit-size of 'long long' [267] */ 455*8910413eSrillig s64 = 1LL << 64; 45616f849b6Srillig } 457cc3c7d5bSrillig 45816f849b6Srillig void shl_u64(void)45916f849b6Srilligshl_u64(void) 46016f849b6Srillig { 461*8910413eSrillig s64 = 1ULL << 62; 462*8910413eSrillig s64 = 1ULL << 63; 463*8910413eSrillig /* expect+1: warning: shift amount 64 equals bit-size of 'unsigned long long' [267] */ 464*8910413eSrillig s64 = 1ULL << 64; 46516f849b6Srillig } 466cc3c7d5bSrillig 46716f849b6Srillig void shr_s32(void)46816f849b6Srilligshr_s32(void) 46916f849b6Srillig { 47016f849b6Srillig s32 = -0x7fffffff >> 1; 47116f849b6Srillig s32 = -10 >> 1; 47216f849b6Srillig s32 = -9 >> 1; 47316f849b6Srillig s32 = +9 >> 1; 47416f849b6Srillig s32 = +10 >> 1; 47516f849b6Srillig s32 = 0x7fffffff >> 1; 47608d1bd5cSrillig 47708d1bd5cSrillig /* expect+1: error: negative array dimension (-16) [20] */ 47808d1bd5cSrillig typedef int minus_32_shr_1[-32 >> 1]; 47908d1bd5cSrillig /* expect+1: error: negative array dimension (-16) [20] */ 48008d1bd5cSrillig typedef int minus_31_shr_1[-31 >> 1]; 48108d1bd5cSrillig /* expect+1: error: negative array dimension (-15) [20] */ 48208d1bd5cSrillig typedef int minus_30_shr_1[-30 >> 1]; 48308d1bd5cSrillig /* expect+1: error: negative array dimension (-1) [20] */ 48408d1bd5cSrillig typedef int minus_1_shr_1[-1 >> 31]; 48516f849b6Srillig } 48616f849b6Srillig 48716f849b6Srillig void shr_u32(void)48816f849b6Srilligshr_u32(void) 48916f849b6Srillig { 49016f849b6Srillig u32 = 0xffffffffU >> 1; 49116f849b6Srillig /* expect+1: warning: shift amount 32 equals bit-size of 'unsigned int' [267] */ 49216f849b6Srillig u32 = 0xffffffffU >> 32; 49316f849b6Srillig u32 = 0x00000000U >> 1; 49416f849b6Srillig } 49516f849b6Srillig 49616f849b6Srillig void shr_s64(void)49716f849b6Srilligshr_s64(void) 49816f849b6Srillig { 49916f849b6Srillig // TODO 50008d1bd5cSrillig 50108d1bd5cSrillig /* expect+1: error: negative array dimension (-16) [20] */ 502*8910413eSrillig typedef int minus_16_shr_0[-16LL >> 0]; 50308d1bd5cSrillig /* expect+1: error: negative array dimension (-8) [20] */ 504*8910413eSrillig typedef int minus_16_shr_1[-16LL >> 1]; 50508d1bd5cSrillig /* expect+1: error: negative array dimension (-1) [20] */ 506*8910413eSrillig typedef int minus_16_shr_16[-16LL >> 16]; 50708d1bd5cSrillig /* expect+1: error: negative array dimension (-1) [20] */ 508*8910413eSrillig typedef int minus_16_shr_40[-16LL >> 40]; 50916f849b6Srillig } 51016f849b6Srillig 51116f849b6Srillig void shr_u64(void)51216f849b6Srilligshr_u64(void) 51316f849b6Srillig { 51416f849b6Srillig // TODO 51516f849b6Srillig } 51616f849b6Srillig 51716f849b6Srillig void compare_s32(void)51816f849b6Srilligcompare_s32(void) 51916f849b6Srillig { 520*8910413eSrillig cond = 0x7fffffff < (-0x7fffffff - 1); 521*8910413eSrillig cond = 0x7fffffff <= (-0x7fffffff - 1); 522*8910413eSrillig cond = 0x7fffffff > (-0x7fffffff - 1); 523*8910413eSrillig cond = 0x7fffffff >= (-0x7fffffff - 1); 524*8910413eSrillig cond = 0x7fffffff == (-0x7fffffff - 1); 525*8910413eSrillig cond = 0x7fffffff != (-0x7fffffff - 1); 52616f849b6Srillig } 52716f849b6Srillig 52816f849b6Srillig void compare_u32(void)52916f849b6Srilligcompare_u32(void) 53016f849b6Srillig { 531*8910413eSrillig cond = 0xffffffffU < 0x00000000U; 532*8910413eSrillig cond = 0xffffffffU <= 0x00000000U; 533*8910413eSrillig cond = 0xffffffffU > 0x00000000U; 534*8910413eSrillig cond = 0xffffffffU >= 0x00000000U; 535*8910413eSrillig cond = 0xffffffffU == 0x00000000U; 536*8910413eSrillig cond = 0xffffffffU != 0x00000000U; 53716f849b6Srillig } 53816f849b6Srillig 53916f849b6Srillig void compare_s64(void)54016f849b6Srilligcompare_s64(void) 54116f849b6Srillig { 542*8910413eSrillig cond = 0x7fffffffffffffffLL < (-0x7fffffffffffffffLL - 1); 543*8910413eSrillig cond = 0x7fffffffffffffffLL <= (-0x7fffffffffffffffLL - 1); 544*8910413eSrillig cond = 0x7fffffffffffffffLL > (-0x7fffffffffffffffLL - 1); 545*8910413eSrillig cond = 0x7fffffffffffffffLL >= (-0x7fffffffffffffffLL - 1); 546*8910413eSrillig cond = 0x7fffffffffffffffLL == (-0x7fffffffffffffffLL - 1); 547*8910413eSrillig cond = 0x7fffffffffffffffLL != (-0x7fffffffffffffffLL - 1); 54816f849b6Srillig } 54916f849b6Srillig 55016f849b6Srillig void compare_u64(void)55116f849b6Srilligcompare_u64(void) 55216f849b6Srillig { 553*8910413eSrillig cond = 0xffffffffffffffffULL < 0x0000000000000000ULL; 554*8910413eSrillig cond = 0xffffffffffffffffULL <= 0x0000000000000000ULL; 555*8910413eSrillig cond = 0xffffffffffffffffULL > 0x0000000000000000ULL; 556*8910413eSrillig cond = 0xffffffffffffffffULL >= 0x0000000000000000ULL; 557*8910413eSrillig cond = 0xffffffffffffffffULL == 0x0000000000000000ULL; 558*8910413eSrillig cond = 0xffffffffffffffffULL != 0x0000000000000000ULL; 55916f849b6Srillig } 56016f849b6Srillig 56116f849b6Srillig void bitand_s32(void)56216f849b6Srilligbitand_s32(void) 56316f849b6Srillig { 56416f849b6Srillig s32 = 0x55555555 & -0xff; 56516f849b6Srillig } 56616f849b6Srillig 56716f849b6Srillig void bitand_u32(void)56816f849b6Srilligbitand_u32(void) 56916f849b6Srillig { 57016f849b6Srillig u32 = 0xffffffffU & 0x55555555U; 57116f849b6Srillig u32 = 0x55555555U & 0xaaaaaaaaU; 57216f849b6Srillig } 57316f849b6Srillig 57416f849b6Srillig void bitand_s64(void)57516f849b6Srilligbitand_s64(void) 57616f849b6Srillig { 577*8910413eSrillig u64 = ~0x7fffeeeeddddccccLL & 0x1111222233334444LL; 57816f849b6Srillig } 57916f849b6Srillig 58016f849b6Srillig void bitand_u64(void)58116f849b6Srilligbitand_u64(void) 58216f849b6Srillig { 583*8910413eSrillig u64 = 0xffffeeeeddddccccULL & 0x1111222233334444ULL; 58416f849b6Srillig } 58516f849b6Srillig 58616f849b6Srillig void bitxor_s32(void)58716f849b6Srilligbitxor_s32(void) 58816f849b6Srillig { 58916f849b6Srillig s32 = 0x12345678 ^ 0x76543210; 59016f849b6Srillig } 59116f849b6Srillig 59216f849b6Srillig void bitxor_u32(void)59316f849b6Srilligbitxor_u32(void) 59416f849b6Srillig { 59516f849b6Srillig u32 = 0xffffffffU ^ 0x55555555U; 59616f849b6Srillig u32 = 0x55555555U ^ 0xaaaaaaaaU; 59716f849b6Srillig } 59816f849b6Srillig 59916f849b6Srillig void bitxor_s64(void)60016f849b6Srilligbitxor_s64(void) 60116f849b6Srillig { 602*8910413eSrillig s64 = ~0x123456789abcdef0LL ^ 0x0123456789abcdefLL; 60316f849b6Srillig } 60416f849b6Srillig 60516f849b6Srillig void bitxor_u64(void)60616f849b6Srilligbitxor_u64(void) 60716f849b6Srillig { 608*8910413eSrillig u64 = 0xfedcba9876543210ULL ^ 0x0123456789abcdefULL; 60916f849b6Srillig } 61016f849b6Srillig 61116f849b6Srillig void bitor_s32(void)61216f849b6Srilligbitor_s32(void) 61316f849b6Srillig { 61416f849b6Srillig s32 = 0x3333cccc | 0x5555aaaa; 61516f849b6Srillig } 61616f849b6Srillig 61716f849b6Srillig void bitor_u32(void)61816f849b6Srilligbitor_u32(void) 61916f849b6Srillig { 62016f849b6Srillig u32 = 0xffffffffU | 0x00000000U; 62116f849b6Srillig u32 = 0xffffffffU | 0xffffffffU; 62216f849b6Srillig u32 = 0x55555555U | 0xaaaaaaaaU; 62316f849b6Srillig } 62416f849b6Srillig 62516f849b6Srillig void bitor_s64(void)62616f849b6Srilligbitor_s64(void) 62716f849b6Srillig { 628*8910413eSrillig s64 = 0x1111222233334444LL | ~0x0000111122223333LL; 62916f849b6Srillig } 63016f849b6Srillig 63116f849b6Srillig void bitor_u64(void)63216f849b6Srilligbitor_u64(void) 63316f849b6Srillig { 634*8910413eSrillig u64 = 0x1111222233334444ULL | 0xffffeeeeddddccccULL; 63516f849b6Srillig } 636