Module Name: src Committed By: rillig Date: Wed Mar 27 20:09:44 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint1: msg_141.c src/usr.bin/xlint/lint1: emit1.c tree.c Log Message: lint: clean up; extend overflow test To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/tests/usr.bin/xlint/lint1/msg_141.c cvs rdiff -u -r1.93 -r1.94 src/usr.bin/xlint/lint1/emit1.c cvs rdiff -u -r1.627 -r1.628 src/usr.bin/xlint/lint1/tree.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint1/msg_141.c diff -u src/tests/usr.bin/xlint/lint1/msg_141.c:1.16 src/tests/usr.bin/xlint/lint1/msg_141.c:1.17 --- src/tests/usr.bin/xlint/lint1/msg_141.c:1.16 Sun Mar 10 19:45:14 2024 +++ src/tests/usr.bin/xlint/lint1/msg_141.c Wed Mar 27 20:09:43 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_141.c,v 1.16 2024/03/10 19:45:14 rillig Exp $ */ +/* $NetBSD: msg_141.c,v 1.17 2024/03/27 20:09:43 rillig Exp $ */ # 3 "msg_141.c" // Test for message: '%s' overflows '%s' [141] @@ -12,6 +12,7 @@ signed int s32; unsigned int u32; signed long long s64; unsigned long long u64; +_Bool cond; void compl_s32(void) @@ -406,7 +407,16 @@ minus_s64(void) void minus_u64(void) { - // TODO + u64 = 0x0000000000000000ULL - 0x0000000000000000ULL; + /* expect+1: warning: '0 - 1' overflows 'unsigned long long' [141] */ + u64 = 0x0000000000000000ULL - 0x0000000000000001ULL; + /* expect+1: warning: '0 - 9223372036854775808' overflows 'unsigned long long' [141] */ + u64 = 0x0000000000000000ULL - 0x8000000000000000ULL; + u64 = 0x8000000000000000ULL - 0x0000000000000001ULL; + /* expect+1: warning: '0 - 18446744073709551615' overflows 'unsigned long long' [141] */ + u64 = 0x0000000000000000ULL - 0xffffffffffffffffULL; + u64 = 0xffffffffffffffffULL - 0x0000000000000000ULL; + u64 = 0xffffffffffffffffULL - 0xffffffffffffffffULL; } void @@ -439,13 +449,19 @@ shl_u32(void) void shl_s64(void) { - // TODO + s64 = 1LL << 62; + s64 = 1LL << 63; + /* expect+1: warning: shift amount 64 equals bit-size of 'long long' [267] */ + s64 = 1LL << 64; } void shl_u64(void) { - // TODO + s64 = 1ULL << 62; + s64 = 1ULL << 63; + /* expect+1: warning: shift amount 64 equals bit-size of 'unsigned long long' [267] */ + s64 = 1ULL << 64; } void @@ -483,13 +499,13 @@ shr_s64(void) // TODO /* expect+1: error: negative array dimension (-16) [20] */ - typedef int shr_minus_1_shr_0[-16LL >> 0]; + typedef int minus_16_shr_0[-16LL >> 0]; /* expect+1: error: negative array dimension (-8) [20] */ - typedef int shr_minus_1_shr_1[-16LL >> 1]; + typedef int minus_16_shr_1[-16LL >> 1]; /* expect+1: error: negative array dimension (-1) [20] */ - typedef int shr_minus_1_shr_16[-16LL >> 16]; + typedef int minus_16_shr_16[-16LL >> 16]; /* expect+1: error: negative array dimension (-1) [20] */ - typedef int shr_minus_1_shr_40[-16LL >> 40]; + typedef int minus_16_shr_40[-16LL >> 40]; } void @@ -501,25 +517,45 @@ shr_u64(void) void compare_s32(void) { - // TODO + cond = 0x7fffffff < (-0x7fffffff - 1); + cond = 0x7fffffff <= (-0x7fffffff - 1); + cond = 0x7fffffff > (-0x7fffffff - 1); + cond = 0x7fffffff >= (-0x7fffffff - 1); + cond = 0x7fffffff == (-0x7fffffff - 1); + cond = 0x7fffffff != (-0x7fffffff - 1); } void compare_u32(void) { - // TODO + cond = 0xffffffffU < 0x00000000U; + cond = 0xffffffffU <= 0x00000000U; + cond = 0xffffffffU > 0x00000000U; + cond = 0xffffffffU >= 0x00000000U; + cond = 0xffffffffU == 0x00000000U; + cond = 0xffffffffU != 0x00000000U; } void compare_s64(void) { - // TODO + cond = 0x7fffffffffffffffLL < (-0x7fffffffffffffffLL - 1); + cond = 0x7fffffffffffffffLL <= (-0x7fffffffffffffffLL - 1); + cond = 0x7fffffffffffffffLL > (-0x7fffffffffffffffLL - 1); + cond = 0x7fffffffffffffffLL >= (-0x7fffffffffffffffLL - 1); + cond = 0x7fffffffffffffffLL == (-0x7fffffffffffffffLL - 1); + cond = 0x7fffffffffffffffLL != (-0x7fffffffffffffffLL - 1); } void compare_u64(void) { - // TODO + cond = 0xffffffffffffffffULL < 0x0000000000000000ULL; + cond = 0xffffffffffffffffULL <= 0x0000000000000000ULL; + cond = 0xffffffffffffffffULL > 0x0000000000000000ULL; + cond = 0xffffffffffffffffULL >= 0x0000000000000000ULL; + cond = 0xffffffffffffffffULL == 0x0000000000000000ULL; + cond = 0xffffffffffffffffULL != 0x0000000000000000ULL; } void @@ -538,13 +574,13 @@ bitand_u32(void) void bitand_s64(void) { - // TODO + u64 = ~0x7fffeeeeddddccccLL & 0x1111222233334444LL; } void bitand_u64(void) { - // TODO + u64 = 0xffffeeeeddddccccULL & 0x1111222233334444ULL; } void @@ -563,13 +599,13 @@ bitxor_u32(void) void bitxor_s64(void) { - // TODO + s64 = ~0x123456789abcdef0LL ^ 0x0123456789abcdefLL; } void bitxor_u64(void) { - // TODO + u64 = 0xfedcba9876543210ULL ^ 0x0123456789abcdefULL; } void @@ -589,11 +625,11 @@ bitor_u32(void) void bitor_s64(void) { - // TODO + s64 = 0x1111222233334444LL | ~0x0000111122223333LL; } void bitor_u64(void) { - // TODO + u64 = 0x1111222233334444ULL | 0xffffeeeeddddccccULL; } Index: src/usr.bin/xlint/lint1/emit1.c diff -u src/usr.bin/xlint/lint1/emit1.c:1.93 src/usr.bin/xlint/lint1/emit1.c:1.94 --- src/usr.bin/xlint/lint1/emit1.c:1.93 Tue Mar 19 23:19:03 2024 +++ src/usr.bin/xlint/lint1/emit1.c Wed Mar 27 20:09:43 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: emit1.c,v 1.93 2024/03/19 23:19:03 rillig Exp $ */ +/* $NetBSD: emit1.c,v 1.94 2024/03/27 20:09:43 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: emit1.c,v 1.93 2024/03/19 23:19:03 rillig Exp $"); +__RCSID("$NetBSD: emit1.c,v 1.94 2024/03/27 20:09:43 rillig Exp $"); #endif #include <stdlib.h> @@ -187,7 +187,7 @@ outsym(const sym_t *sym, scl_t sc, def_t */ if (sc != EXTERN && !(sc == STATIC && sym->s_type->t_tspec == FUNC)) return; - if (isdigit((unsigned char)sym->s_name[0])) /* 00000000_tmp */ + if (isdigit((unsigned char)sym->s_name[0])) /* see mktempsym */ return; outint(csrc_pos.p_line); Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.627 src/usr.bin/xlint/lint1/tree.c:1.628 --- src/usr.bin/xlint/lint1/tree.c:1.627 Wed Mar 27 19:28:20 2024 +++ src/usr.bin/xlint/lint1/tree.c Wed Mar 27 20:09:43 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.627 2024/03/27 19:28:20 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.628 2024/03/27 20:09:43 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: tree.c,v 1.627 2024/03/27 19:28:20 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.628 2024/03/27 20:09:43 rillig Exp $"); #endif #include <float.h> @@ -829,11 +829,11 @@ fold_unsigned_integer(op_t op, uint64_t *overflow = l < r; return l - r; case SHL: - /* TODO: warn about out-of-bounds 'sr'. */ + /* TODO: warn about out-of-bounds 'r'. */ /* TODO: warn about overflow. */ return l << (r & 63); case SHR: - /* TODO: warn about out-of-bounds 'sr'. */ + /* TODO: warn about out-of-bounds 'r'. */ return l >> (r & 63); case LT: return l < r ? 1 : 0; @@ -924,11 +924,11 @@ fold_signed_integer(op_t op, int64_t l, } return l - r; case SHL: - /* TODO: warn about out-of-bounds 'sr'. */ + /* TODO: warn about out-of-bounds 'r'. */ /* TODO: warn about overflow. */ return l << (r & 63); case SHR: - /* TODO: warn about out-of-bounds 'sr'. */ + /* TODO: warn about out-of-bounds 'r'. */ if (l < 0) return (int64_t)~(~(uint64_t)l >> (r & 63)); return (int64_t)((uint64_t)l >> (r & 63)); @@ -4241,8 +4241,7 @@ check_function_arguments(const function_ error(151, i + 1); return; } - if (is_struct_or_union(at) && - is_incomplete(arg->tn_type)) { + if (is_struct_or_union(at) && is_incomplete(arg->tn_type)) { /* argument cannot have unknown size, arg #%d */ error(152, i + 1); return;