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;

Reply via email to