Module Name: src
Committed By: rillig
Date: Sat Jan 6 15:05:24 UTC 2024
Modified Files:
src/tests/usr.bin/xlint/lint1: expr_fold.c
src/usr.bin/xlint/lint1: decl.c func.c lint1.h tree.c
Log Message:
lint: remove redundant parentheses, braces and comments
Rename the functions for folding constant expressions, to make the
comments redundant.
To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/tests/usr.bin/xlint/lint1/expr_fold.c
cvs rdiff -u -r1.385 -r1.386 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.178 -r1.179 src/usr.bin/xlint/lint1/func.c
cvs rdiff -u -r1.205 -r1.206 src/usr.bin/xlint/lint1/lint1.h
cvs rdiff -u -r1.588 -r1.589 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.10 src/tests/usr.bin/xlint/lint1/expr_fold.c:1.11
--- src/tests/usr.bin/xlint/lint1/expr_fold.c:1.10 Sun Jul 9 11:01:27 2023
+++ src/tests/usr.bin/xlint/lint1/expr_fold.c Sat Jan 6 15:05:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: expr_fold.c,v 1.10 2023/07/09 11:01:27 rillig Exp $ */
+/* $NetBSD: expr_fold.c,v 1.11 2024/01/06 15:05:24 rillig Exp $ */
# 3 "expr_fold.c"
/*
@@ -185,7 +185,6 @@ fold_shl(void)
/* expect+1: warning: operator '<<' produces integer overflow [141] */
take_uint(1U << 24 << 24);
- /* FIXME: undefined behavior in 'fold' at 'uint64_t << 104'. */
/* expect+1: warning: shift amount 104 is greater than bit-size 32 of 'unsigned int' [122] */
take_uint(1U << 24 << 104);
}
@@ -197,7 +196,6 @@ fold_shr(void)
take_int(16777216 >> 25);
- /* FIXME: undefined behavior in 'fold' at 'uint64_t >> 104'. */
/* expect+1: warning: shift amount 104 is greater than bit-size 32 of 'int' [122] */
take_int(16777216 >> 104);
}
Index: src/usr.bin/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.385 src/usr.bin/xlint/lint1/decl.c:1.386
--- src/usr.bin/xlint/lint1/decl.c:1.385 Sun Dec 10 15:29:38 2023
+++ src/usr.bin/xlint/lint1/decl.c Sat Jan 6 15:05:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.385 2023/12/10 15:29:38 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.386 2024/01/06 15:05:24 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID)
-__RCSID("$NetBSD: decl.c,v 1.385 2023/12/10 15:29:38 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.386 2024/01/06 15:05:24 rillig Exp $");
#endif
#include <sys/param.h>
@@ -852,7 +852,7 @@ check_type(sym_t *sym)
if (t == FUNC && !tp->t_proto &&
!(to == NO_TSPEC && sym->s_osdef)) {
/* TODO: Make this an error in C99 mode as well. */
- if ((!allow_trad && !allow_c99) && hflag)
+ if (!allow_trad && !allow_c99 && hflag)
/* function declaration is not a prototype */
warning(287);
}
Index: src/usr.bin/xlint/lint1/func.c
diff -u src/usr.bin/xlint/lint1/func.c:1.178 src/usr.bin/xlint/lint1/func.c:1.179
--- src/usr.bin/xlint/lint1/func.c:1.178 Sun Dec 3 18:17:41 2023
+++ src/usr.bin/xlint/lint1/func.c Sat Jan 6 15:05:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: func.c,v 1.178 2023/12/03 18:17:41 rillig Exp $ */
+/* $NetBSD: func.c,v 1.179 2024/01/06 15:05:24 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID)
-__RCSID("$NetBSD: func.c,v 1.178 2023/12/03 18:17:41 rillig Exp $");
+__RCSID("$NetBSD: func.c,v 1.179 2024/01/06 15:05:24 rillig Exp $");
#endif
#include <stdlib.h>
@@ -326,7 +326,7 @@ begin_function(sym_t *fsym)
if (fsym->s_osdef && !fsym->s_type->t_proto) {
/* TODO: Make this an error in C99 mode as well. */
- if ((!allow_trad && !allow_c99) && hflag &&
+ if (!allow_trad && !allow_c99 && hflag &&
strcmp(fsym->s_name, "main") != 0)
/* function definition is not a prototype */
warning(286);
Index: src/usr.bin/xlint/lint1/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.205 src/usr.bin/xlint/lint1/lint1.h:1.206
--- src/usr.bin/xlint/lint1/lint1.h:1.205 Sun Dec 3 18:17:41 2023
+++ src/usr.bin/xlint/lint1/lint1.h Sat Jan 6 15:05:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.205 2023/12/03 18:17:41 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.206 2024/01/06 15:05:24 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -664,7 +664,7 @@ value_bits(unsigned bitsize)
* see d_c99_complex_split.c to trigger this case.
*/
if (bitsize >= 64)
- return ~((uint64_t)0);
+ return ~(uint64_t)0;
return ~(~(uint64_t)0 << bitsize);
}
Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.588 src/usr.bin/xlint/lint1/tree.c:1.589
--- src/usr.bin/xlint/lint1/tree.c:1.588 Sat Jan 6 14:21:26 2024
+++ src/usr.bin/xlint/lint1/tree.c Sat Jan 6 15:05:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.588 2024/01/06 14:21:26 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.589 2024/01/06 15:05:24 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.588 2024/01/06 14:21:26 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.589 2024/01/06 15:05:24 rillig Exp $");
#endif
#include <float.h>
@@ -787,12 +787,8 @@ build_address(bool sys, tnode_t *tn, boo
* this function. An audit and a set of proper regression tests are needed.
* --Perry Metzger, Nov. 16, 2001
*/
-/*
- * Do only as much as necessary to compute constant expressions.
- * Called only if the operator allows folding and all operands are constants.
- */
static tnode_t *
-fold(tnode_t *tn)
+fold_constant_integer(tnode_t *tn)
{
val_t *v = xcalloc(1, sizeof(*v));
@@ -827,7 +823,7 @@ fold(tnode_t *tn)
si = (int64_t)(ul * ur);
if (si != (si & mask))
ovfl = true;
- else if ((ul != 0) && ((si / ul) != ur))
+ else if (ul != 0 && si / ul != ur)
ovfl = true;
} else {
si = sl * sr;
@@ -954,7 +950,7 @@ build_struct_access(op_t op, bool sys, t
type_t *ptr_tp = expr_derive_type(rn->tn_type, PTR);
tnode_t *ntn = build_op(PLUS, sys, ptr_tp, ln, ctn);
if (ln->tn_op == CON)
- ntn = fold(ntn);
+ ntn = fold_constant_integer(ntn);
op_t nop = rn->tn_type->t_bitfield ? FSEL : INDIR;
ntn = build_op(nop, sys, ntn->tn_type->t_subt, ntn, NULL);
@@ -1104,7 +1100,7 @@ build_plus_minus(op_t op, bool sys, tnod
tnode_t *prod = build_op(MULT, sys, rn->tn_type, rn, elsz);
if (rn->tn_op == CON)
- prod = fold(prod);
+ prod = fold_constant_integer(prod);
return build_op(op, sys, ln->tn_type, ln, prod);
}
@@ -1117,7 +1113,7 @@ build_plus_minus(op_t op, bool sys, tnod
type_t *ptrdiff = gettyp(PTRDIFF_TSPEC);
tnode_t *raw_diff = build_op(op, sys, ptrdiff, ln, rn);
if (ln->tn_op == CON && rn->tn_op == CON)
- raw_diff = fold(raw_diff);
+ raw_diff = fold_constant_integer(raw_diff);
tnode_t *elsz = subt_size_in_bytes(ln->tn_type);
balance(NOOP, &raw_diff, &elsz);
@@ -1308,7 +1304,7 @@ build_assignment(op_t op, bool sys, tnod
rn = convert(NOOP, 0, ctn->tn_type, rn);
rn = build_op(MULT, sys, rn->tn_type, rn, ctn);
if (rn->tn_left->tn_op == CON)
- rn = fold(rn);
+ rn = fold_constant_integer(rn);
}
if ((op == ASSIGN || op == RETURN || op == INIT) &&
@@ -1454,11 +1450,8 @@ check_precedence_confusion(tnode_t *tn)
}
}
-/*
- * Fold constant nodes, as much as is needed for comparing the value with 0.
- */
static tnode_t *
-fold_bool(tnode_t *tn)
+fold_constant_compare_zero(tnode_t *tn)
{
val_t *v = xcalloc(1, sizeof(*v));
@@ -1530,11 +1523,8 @@ is_floating_overflow(tspec_t t, long dou
return false;
}
-/*
- * Fold constant nodes having operands with floating point type.
- */
static tnode_t *
-fold_float(tnode_t *tn)
+fold_constant_floating(tnode_t *tn)
{
fpe = 0;
@@ -1657,22 +1647,14 @@ build_binary(tnode_t *ln, op_t op, bool
if (mp->m_binary && op != ARROW && op != POINT)
rn = cconv(rn);
- /*
- * Print some warnings for comparisons of unsigned values with
- * constants lower than or equal to null. This must be done before
- * promote() because otherwise unsigned char and unsigned short would
- * be promoted to int. Types are also tested to be CHAR, which would
- * also become int.
- */
if (mp->m_comparison)
check_integer_comparison(op, ln, rn);
if (mp->m_value_context || mp->m_compares_with_zero)
ln = promote(op, false, ln);
if (mp->m_binary && op != ARROW && op != POINT &&
- op != ASSIGN && op != RETURN && op != INIT) {
+ op != ASSIGN && op != RETURN && op != INIT)
rn = promote(op, false, rn);
- }
if (mp->m_warn_if_left_unsigned_in_c90 &&
ln->tn_op == CON && ln->tn_val.v_unsigned_since_c90) {
@@ -1768,23 +1750,22 @@ build_binary(tnode_t *ln, op_t op, bool
if (hflag && !suppress_constcond &&
mp->m_compares_with_zero &&
(ln->tn_op == CON ||
- ((mp->m_binary && op != QUEST) && rn->tn_op == CON)) &&
+ (mp->m_binary && op != QUEST && rn->tn_op == CON)) &&
/* XXX: rn->tn_system_dependent should be checked as well */
!ln->tn_system_dependent) {
/* constant in conditional context */
warning(161);
}
- if (mp->m_fold_constant_operands) {
- if (ln->tn_op == CON && (!mp->m_binary || rn->tn_op == CON)) {
- if (mp->m_compares_with_zero) {
- ntn = fold_bool(ntn);
- } else if (is_floating(ntn->tn_type->t_tspec)) {
- ntn = fold_float(ntn);
- } else {
- ntn = fold(ntn);
- }
- } else if (op == QUEST && ln->tn_op == CON) {
+ if (mp->m_fold_constant_operands && ln->tn_op == CON) {
+ if (!mp->m_binary || rn->tn_op == CON) {
+ if (mp->m_compares_with_zero)
+ ntn = fold_constant_compare_zero(ntn);
+ else if (is_floating(ntn->tn_type->t_tspec))
+ ntn = fold_constant_floating(ntn);
+ else
+ ntn = fold_constant_integer(ntn);
+ } else if (op == QUEST) {
lint_assert(has_operands(rn));
use(ln->tn_val.u.integer != 0
? rn->tn_right : rn->tn_left);
@@ -2337,7 +2318,7 @@ check_pointer_comparison(op_t op, const
if (lst == VOID || rst == VOID) {
/* TODO: C99 behaves like C90 here. */
- if ((!allow_trad && !allow_c99) &&
+ if (!allow_trad && !allow_c99 &&
(lst == FUNC || rst == FUNC)) {
/* (void *)0 is already handled in typeok() */
const char *lsts, *rsts;
@@ -2356,7 +2337,7 @@ check_pointer_comparison(op_t op, const
if (lst == FUNC && rst == FUNC) {
/* TODO: C99 behaves like C90 here, see C99 6.5.8p2. */
- if ((!allow_trad && !allow_c99) && op != EQ && op != NE)
+ if (!allow_trad && !allow_c99 && op != EQ && op != NE)
/* pointers to functions can only be compared ... */
warning(125);
}
@@ -2554,7 +2535,7 @@ check_assign_void_pointer(op_t op, int a
/* two pointers, at least one pointer to void */
/* TODO: C99 behaves like C90 here. */
- if (!((!allow_trad && !allow_c99) && (lst == FUNC || rst == FUNC)))
+ if (!(!allow_trad && !allow_c99 && (lst == FUNC || rst == FUNC)))
return;
/* comb. of ptr to func and ptr to void */
@@ -3515,7 +3496,7 @@ convert_pointer_from_pointer(type_t *ntp
if (nst == VOID || ost == VOID) {
/* TODO: C99 behaves like C90 here. */
- if ((!allow_trad && !allow_c99) && (nst == FUNC || ost == FUNC)) {
+ if (!allow_trad && !allow_c99 && (nst == FUNC || ost == FUNC)) {
const char *nts, *ots;
/* null pointers are already handled in convert() */
*(nst == FUNC ? &nts : &ots) = "function pointer";
@@ -3829,8 +3810,8 @@ convert_constant_check_range(tspec_t ot,
} else if (op == ANDASS || op == BITAND) {
convert_constant_check_range_bitand(
nbitsz, obitsz, xmask, nv, ot, v, tp, op);
- } else if ((nt != PTR && is_uinteger(nt)) &&
- (ot != PTR && !is_uinteger(ot)) &&
+ } else if (nt != PTR && is_uinteger(nt) &&
+ ot != PTR && !is_uinteger(ot) &&
v->u.integer < 0)
convert_constant_check_range_signed(op, arg);
else if (nv->u.integer != v->u.integer && nbitsz <= obitsz &&