Module Name: src Committed By: rillig Date: Sat Aug 28 16:43:50 UTC 2021
Modified Files: src/usr.bin/xlint/lint1: tree.c Log Message: lint: clean up check_integer_comparison No functional change. To generate a diff of this commit: cvs rdiff -u -r1.358 -r1.359 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/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.358 src/usr.bin/xlint/lint1/tree.c:1.359 --- src/usr.bin/xlint/lint1/tree.c:1.358 Sat Aug 28 16:36:54 2021 +++ src/usr.bin/xlint/lint1/tree.c Sat Aug 28 16:43:50 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.358 2021/08/28 16:36:54 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.359 2021/08/28 16:43:50 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.358 2021/08/28 16:36:54 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.359 2021/08/28 16:43:50 rillig Exp $"); #endif #include <float.h> @@ -4098,6 +4098,14 @@ check_array_index(tnode_t *tn, bool ampe } } +static bool +is_out_of_char_range(const tnode_t *tn) +{ + return tn->tn_op == CON && + (tn->tn_val->v_quad < 0 || + tn->tn_val->v_quad > (int)~(~0U << (CHAR_SIZE - 1))); +} + /* * Check for ordered comparisons of unsigned values with 0. */ @@ -4115,16 +4123,8 @@ check_integer_comparison(op_t op, tnode_ if (!is_integer(lt) || !is_integer(rt)) return; - if ((hflag || pflag) && lt == CHAR && rn->tn_op == CON && - (rn->tn_val->v_quad < 0 || - rn->tn_val->v_quad > (int)~(~0U << (CHAR_SIZE - 1)))) { - /* nonportable character comparison, op %s */ - warning(230, op_name(op)); - return; - } - if ((hflag || pflag) && rt == CHAR && ln->tn_op == CON && - (ln->tn_val->v_quad < 0 || - ln->tn_val->v_quad > (int)~(~0U << (CHAR_SIZE - 1)))) { + if ((hflag || pflag) && ((lt == CHAR && is_out_of_char_range(rn)) || + (rt == CHAR && is_out_of_char_range(ln)))) { /* nonportable character comparison, op %s */ warning(230, op_name(op)); return;