Module Name: src Committed By: rillig Date: Thu Aug 19 20:48:48 UTC 2021
Modified Files: src/tests/usr.bin/xlint/lint1: expr_fold.c expr_fold.exp src/usr.bin/xlint/lint1: tree.c Log Message: lint: fix wrong integer overflow warning for unsigned types To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/expr_fold.c \ src/tests/usr.bin/xlint/lint1/expr_fold.exp cvs rdiff -u -r1.337 -r1.338 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/expr_fold.c diff -u src/tests/usr.bin/xlint/lint1/expr_fold.c:1.1 src/tests/usr.bin/xlint/lint1/expr_fold.c:1.2 --- src/tests/usr.bin/xlint/lint1/expr_fold.c:1.1 Thu Aug 19 20:32:33 2021 +++ src/tests/usr.bin/xlint/lint1/expr_fold.c Thu Aug 19 20:48:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: expr_fold.c,v 1.1 2021/08/19 20:32:33 rillig Exp $ */ +/* $NetBSD: expr_fold.c,v 1.2 2021/08/19 20:48:47 rillig Exp $ */ # 3 "expr_fold.c" /* @@ -175,9 +175,9 @@ fold_plus(void) * other operand is converted to unsigned as well. * See C99 6.3.1.8p1, paragraph 8 of 10. */ - /*FIXME*//* expect+1: warning: integer overflow detected, op + [141] */ + /* wrong integer overflow warning before tree.c 1.338 from 2021-08-19 */ take_uint(2147483647 + 1U); - /*FIXME*//* expect+1: warning: integer overflow detected, op + [141] */ + /* wrong integer overflow warning before tree.c 1.338 from 2021-08-19 */ take_uint(2147483647U + 1); } Index: src/tests/usr.bin/xlint/lint1/expr_fold.exp diff -u src/tests/usr.bin/xlint/lint1/expr_fold.exp:1.1 src/tests/usr.bin/xlint/lint1/expr_fold.exp:1.2 --- src/tests/usr.bin/xlint/lint1/expr_fold.exp:1.1 Thu Aug 19 20:32:33 2021 +++ src/tests/usr.bin/xlint/lint1/expr_fold.exp Thu Aug 19 20:48:47 2021 @@ -43,8 +43,6 @@ expr_fold.c(155): error: modulus by 0 [1 expr_fold.c(158): warning: argument #1 is converted from 'long' to 'int' due to prototype [259] expr_fold.c(165): warning: integer overflow detected, op + [141] expr_fold.c(171): warning: integer overflow detected, op + [141] -expr_fold.c(179): warning: integer overflow detected, op + [141] -expr_fold.c(181): warning: integer overflow detected, op + [141] expr_fold.c(188): warning: integer overflow detected, op - [141] expr_fold.c(192): warning: integer overflow detected, op - [141] expr_fold.c(195): warning: argument #1 is converted from 'long' to 'int' due to prototype [259] Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.337 src/usr.bin/xlint/lint1/tree.c:1.338 --- src/usr.bin/xlint/lint1/tree.c:1.337 Mon Aug 16 18:51:03 2021 +++ src/usr.bin/xlint/lint1/tree.c Thu Aug 19 20:48:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.337 2021/08/16 18:51:03 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.338 2021/08/19 20:48:47 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: tree.c,v 1.337 2021/08/16 18:51:03 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.338 2021/08/19 20:48:47 rillig Exp $"); #endif #include <float.h> @@ -3072,7 +3072,7 @@ fold(tnode_t *tn) if (msb(q, t, -1) == 0) ovfl = true; } else if (msb(sl, t, -1) == 0 && msb(sr, t, -1) == 0) { - if (msb(q, t, -1) != 0) + if (msb(q, t, -1) != 0 && !utyp) ovfl = true; } break;