Module Name: src Committed By: rillig Date: Sun Sep 5 17:49:55 UTC 2021
Modified Files: src/tests/usr.bin/xlint/lint1: msg_162.c msg_162.exp src/usr.bin/xlint/lint1: Makefile tree.c Log Message: lint: do not warn about comparison 'unsigned <= 0' Seen in scanners generated by Flex, and about 50 occurrences in the NetBSD src and xsrc tree, all of which are not suspicious of being bugs. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/msg_162.c \ src/tests/usr.bin/xlint/lint1/msg_162.exp cvs rdiff -u -r1.86 -r1.87 src/usr.bin/xlint/lint1/Makefile cvs rdiff -u -r1.378 -r1.379 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_162.c diff -u src/tests/usr.bin/xlint/lint1/msg_162.c:1.5 src/tests/usr.bin/xlint/lint1/msg_162.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_162.c:1.5 Sun Sep 5 16:47:24 2021 +++ src/tests/usr.bin/xlint/lint1/msg_162.c Sun Sep 5 17:49:55 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_162.c,v 1.5 2021/09/05 16:47:24 rillig Exp $ */ +/* $NetBSD: msg_162.c,v 1.6 2021/09/05 17:49:55 rillig Exp $ */ # 3 "msg_162.c" // Test for message: comparison of %s with %s, op %s [162] @@ -23,7 +23,7 @@ left_unsigned(unsigned int ui) if (ui >= 0) { } - /* expect+1: warning: comparison of unsigned int with 0, op <= [162] */ + /* before 2021-09-05: comparison of unsigned int with 0, op <= [162] */ if (ui <= 0) { } } @@ -47,7 +47,7 @@ right_unsigned(unsigned int ui) if (0 <= ui) { } - /* expect+1: warning: comparison of 0 with unsigned int, op >= [162] */ + /* before 2021-09-05: comparison of 0 with unsigned int, op >= [162] */ if (0 >= ui) { } } @@ -97,11 +97,18 @@ compare_operators(unsigned int x) /* expect+1: warning: comparison of unsigned int with negative constant, op <= [162] */ take_bool(x <= -1); /* - * XXX: The expression 'x <= 0' is equivalent to 'x < 1', so lint - * should not warn about it, just as it doesn't warn about the - * inverted condition, which is 'x > 0'. + * Before tree.c 1.379 from 2021-09-05, lint warned about + * 'unsigned <= 0' as well as '0 >= unsigned'. In all cases where + * the programmer knows whether the underlying data type is signed or + * unsigned, it is clearer to express the same thought as + * 'unsigned == 0', but that's a stylistic issue only. + * + * Removing this particular case of the warning is not expected to + * miss any bugs. The expression 'x <= 0' is equivalent to 'x < 1', + * so lint should not warn about it, just as it doesn't warn about + * the inverted condition, which is 'x > 0'. */ - /* expect+1: warning: comparison of unsigned int with 0, op <= [162] */ + /* before 2021-09-05: comparison of unsigned int with 0, op <= [162] */ take_bool(x <= 0); take_bool(x <= 1); Index: src/tests/usr.bin/xlint/lint1/msg_162.exp diff -u src/tests/usr.bin/xlint/lint1/msg_162.exp:1.5 src/tests/usr.bin/xlint/lint1/msg_162.exp:1.6 --- src/tests/usr.bin/xlint/lint1/msg_162.exp:1.5 Sun Sep 5 16:47:24 2021 +++ src/tests/usr.bin/xlint/lint1/msg_162.exp Sun Sep 5 17:49:55 2021 @@ -1,18 +1,15 @@ msg_162.c(15): warning: comparison of unsigned int with negative constant, op < [162] msg_162.c(19): warning: comparison of unsigned int with 0, op < [162] msg_162.c(23): warning: comparison of unsigned int with 0, op >= [162] -msg_162.c(27): warning: comparison of unsigned int with 0, op <= [162] msg_162.c(39): warning: comparison of negative constant with unsigned int, op > [162] msg_162.c(43): warning: comparison of 0 with unsigned int, op > [162] msg_162.c(47): warning: comparison of 0 with unsigned int, op <= [162] -msg_162.c(51): warning: comparison of 0 with unsigned int, op >= [162] msg_162.c(76): warning: comparison of unsigned char with negative constant, op == [162] msg_162.c(92): warning: comparison of unsigned int with negative constant, op < [162] msg_162.c(94): warning: comparison of unsigned int with 0, op < [162] msg_162.c(98): warning: comparison of unsigned int with negative constant, op <= [162] -msg_162.c(105): warning: comparison of unsigned int with 0, op <= [162] -msg_162.c(109): warning: comparison of unsigned int with negative constant, op > [162] -msg_162.c(114): warning: comparison of unsigned int with negative constant, op >= [162] -msg_162.c(116): warning: comparison of unsigned int with 0, op >= [162] -msg_162.c(120): warning: comparison of unsigned int with negative constant, op == [162] -msg_162.c(125): warning: comparison of unsigned int with negative constant, op != [162] +msg_162.c(116): warning: comparison of unsigned int with negative constant, op > [162] +msg_162.c(121): warning: comparison of unsigned int with negative constant, op >= [162] +msg_162.c(123): warning: comparison of unsigned int with 0, op >= [162] +msg_162.c(127): warning: comparison of unsigned int with negative constant, op == [162] +msg_162.c(132): warning: comparison of unsigned int with negative constant, op != [162] Index: src/usr.bin/xlint/lint1/Makefile diff -u src/usr.bin/xlint/lint1/Makefile:1.86 src/usr.bin/xlint/lint1/Makefile:1.87 --- src/usr.bin/xlint/lint1/Makefile:1.86 Sun Sep 5 16:36:56 2021 +++ src/usr.bin/xlint/lint1/Makefile Sun Sep 5 17:49:55 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.86 2021/09/05 16:36:56 rillig Exp $ +# $NetBSD: Makefile,v 1.87 2021/09/05 17:49:55 rillig Exp $ .include <bsd.own.mk> @@ -20,7 +20,6 @@ LINTFLAGS+= -T LOBJS.${PROG}+= ${SRCS:M*.y:.y=.ln} LOBJS.${PROG}+= ${SRCS:M*.l:.l=.ln} LINTFLAGS.scan.c+= -X 107,126,330,331,332,333 # strict bool mode -LINTFLAGS.scan.c+= -X 162 # comparison of 'unsigned <= 0' LINTFLAGS.scan.c+= -X 192,214 # due to suppressed bool errors LINTFLAGS.scan.c+= -X 307 # static variable unused Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.378 src/usr.bin/xlint/lint1/tree.c:1.379 --- src/usr.bin/xlint/lint1/tree.c:1.378 Sun Sep 5 16:03:55 2021 +++ src/usr.bin/xlint/lint1/tree.c Sun Sep 5 17:49:55 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.378 2021/09/05 16:03:55 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.379 2021/09/05 17:49:55 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.378 2021/09/05 16:03:55 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.379 2021/09/05 17:49:55 rillig Exp $"); #endif #include <float.h> @@ -4232,7 +4232,7 @@ check_integer_comparison(op_t op, tnode_ /* comparison of %s with %s, op %s */ warning(162, type_name(ln->tn_type), "negative constant", op_name(op)); - } else if (op == LT || op == GE || (hflag && op == LE)) { + } else if (op == LT || op == GE) { /* comparison of %s with %s, op %s */ warning(162, type_name(ln->tn_type), "0", op_name(op)); } @@ -4244,7 +4244,7 @@ check_integer_comparison(op_t op, tnode_ /* comparison of %s with %s, op %s */ warning(162, "negative constant", type_name(rn->tn_type), op_name(op)); - } else if (op == GT || op == LE || (hflag && op == GE)) { + } else if (op == GT || op == LE) { /* comparison of %s with %s, op %s */ warning(162, "0", type_name(rn->tn_type), op_name(op)); }