Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/xlint/lint1 lint: rename val_t.v_unsigned to avoid c...



details:   https://anonhg.NetBSD.org/src/rev/a3825928af5d
branches:  trunk
changeset: 379816:a3825928af5d
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Jun 20 20:32:42 2021 +0000

description:
lint: rename val_t.v_unsigned to avoid confusion

The name v_unsigned suggested that the value would be interpreted as
unsigned, which was wrong.  Whether a value is signed or unsigned is
decided by v_tspec instead.

Revert the previous commit for boolen constants since their value is
already interpreted as unsigned, and there is no need for any warning
about differences between traditional C and ANSI C since the _Bool type
has only been added ten years later in C99.

The code for printing a tree node was also confused by this struct
member, even with its old name v_ansiu.  That code will be fixed in a
follow-up commit.

No functional change.

diffstat:

 usr.bin/xlint/lint1/ckbool.c |   8 ++++----
 usr.bin/xlint/lint1/lex.c    |   6 +++---
 usr.bin/xlint/lint1/lint1.h  |  11 ++++++++---
 usr.bin/xlint/lint1/print.c  |   7 ++++---
 usr.bin/xlint/lint1/tree.c   |  25 +++++++++++++------------
 5 files changed, 32 insertions(+), 25 deletions(-)

diffs (200 lines):

diff -r c8d5e38d2ee7 -r a3825928af5d usr.bin/xlint/lint1/ckbool.c
--- a/usr.bin/xlint/lint1/ckbool.c      Sun Jun 20 19:15:58 2021 +0000
+++ b/usr.bin/xlint/lint1/ckbool.c      Sun Jun 20 20:32:42 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ckbool.c,v 1.3 2021/06/20 19:15:58 rillig Exp $ */
+/* $NetBSD: ckbool.c,v 1.4 2021/06/20 20:32:42 rillig Exp $ */
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
 #include <sys/cdefs.h>
 
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: ckbool.c,v 1.3 2021/06/20 19:15:58 rillig Exp $");
+__RCSID("$NetBSD: ckbool.c,v 1.4 2021/06/20 20:32:42 rillig Exp $");
 #endif
 
 #include <string.h>
@@ -252,7 +252,7 @@ fallback_symbol_strict_bool(sym_t *sym)
                sym->s_scl = CTCONST; /* close enough */
                sym->s_type = gettyp(BOOL);
                sym->s_value.v_tspec = BOOL;
-               sym->s_value.v_unsigned = true;
+               sym->s_value.v_unsigned_since_c90 = false;
                sym->s_value.v_quad = 0;
                return true;
        }
@@ -261,7 +261,7 @@ fallback_symbol_strict_bool(sym_t *sym)
                sym->s_scl = CTCONST; /* close enough */
                sym->s_type = gettyp(BOOL);
                sym->s_value.v_tspec = BOOL;
-               sym->s_value.v_unsigned = true;
+               sym->s_value.v_unsigned_since_c90 = false;
                sym->s_value.v_quad = 1;
                return true;
        }
diff -r c8d5e38d2ee7 -r a3825928af5d usr.bin/xlint/lint1/lex.c
--- a/usr.bin/xlint/lint1/lex.c Sun Jun 20 19:15:58 2021 +0000
+++ b/usr.bin/xlint/lint1/lex.c Sun Jun 20 20:32:42 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lex.c,v 1.45 2021/06/20 19:04:50 rillig Exp $ */
+/* $NetBSD: lex.c,v 1.46 2021/06/20 20:32:42 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: lex.c,v 1.45 2021/06/20 19:04:50 rillig Exp $");
+__RCSID("$NetBSD: lex.c,v 1.46 2021/06/20 20:32:42 rillig Exp $");
 #endif
 
 #include <ctype.h>
@@ -672,7 +672,7 @@ lex_integer_constant(const char *yytext,
 
        yylval.y_val = xcalloc(1, sizeof(*yylval.y_val));
        yylval.y_val->v_tspec = typ;
-       yylval.y_val->v_unsigned = ansiu;
+       yylval.y_val->v_unsigned_since_c90 = ansiu;
        yylval.y_val->v_quad = (int64_t)uq;
 
        return T_CON;
diff -r c8d5e38d2ee7 -r a3825928af5d usr.bin/xlint/lint1/lint1.h
--- a/usr.bin/xlint/lint1/lint1.h       Sun Jun 20 19:15:58 2021 +0000
+++ b/usr.bin/xlint/lint1/lint1.h       Sun Jun 20 20:32:42 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.104 2021/06/20 19:04:50 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.105 2021/06/20 20:32:42 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -107,8 +107,13 @@ typedef enum {
 /* An integer or floating-point value. */
 typedef struct {
        tspec_t v_tspec;
-       bool    v_unsigned;             /* set if an integer constant is
-                                          unsigned in C90 and later */
+       /*
+        * Set if an integer constant is unsigned only in C90 and later, but
+        * not in traditional C.
+        *
+        * See the operators table in ops.def, columns "l r".
+        */
+       bool    v_unsigned_since_c90;
        union {
                int64_t _v_quad;        /* integers */
                ldbl_t  _v_ldbl;        /* floats */
diff -r c8d5e38d2ee7 -r a3825928af5d usr.bin/xlint/lint1/print.c
--- a/usr.bin/xlint/lint1/print.c       Sun Jun 20 19:15:58 2021 +0000
+++ b/usr.bin/xlint/lint1/print.c       Sun Jun 20 20:32:42 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: print.c,v 1.13 2021/06/20 19:04:50 rillig Exp $        */
+/*     $NetBSD: print.c,v 1.14 2021/06/20 20:32:42 rillig Exp $        */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: print.c,v 1.13 2021/06/20 19:04:50 rillig Exp $");
+__RCSID("$NetBSD: print.c,v 1.14 2021/06/20 20:32:42 rillig Exp $");
 #endif
 
 #include <stdio.h>
@@ -63,7 +63,8 @@ print_tnode(char *buf, size_t bufsiz, co
                        break;
                default:
                        (void)snprintf(buf, bufsiz,
-                           v->v_unsigned ? "%llu" : "%lld",
+                           /* FIXME */
+                           v->v_unsigned_since_c90 ? "%llu" : "%lld",
                            (unsigned long long)v->v_quad);
                        break;
                }
diff -r c8d5e38d2ee7 -r a3825928af5d usr.bin/xlint/lint1/tree.c
--- a/usr.bin/xlint/lint1/tree.c        Sun Jun 20 19:15:58 2021 +0000
+++ b/usr.bin/xlint/lint1/tree.c        Sun Jun 20 20:32:42 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tree.c,v 1.288 2021/06/20 19:04:50 rillig Exp $        */
+/*     $NetBSD: tree.c,v 1.289 2021/06/20 20:32:42 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.288 2021/06/20 19:04:50 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.289 2021/06/20 20:32:42 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -183,7 +183,7 @@ expr_new_constant(type_t *tp, val_t *v)
        n->tn_type = tp;
        n->tn_val = expr_zalloc(sizeof(*n->tn_val));
        n->tn_val->v_tspec = tp->t_tspec;
-       n->tn_val->v_unsigned = v->v_unsigned;
+       n->tn_val->v_unsigned_since_c90 = v->v_unsigned_since_c90;
        n->tn_val->v_u = v->v_u;
        free(v);
        return n;
@@ -532,16 +532,16 @@ build(op_t op, tnode_t *ln, tnode_t *rn)
         * ANSI C, print a warning.
         */
        if (mp->m_warn_if_left_unsigned_in_c90 &&
-           ln->tn_op == CON && ln->tn_val->v_unsigned) {
+           ln->tn_op == CON && ln->tn_val->v_unsigned_since_c90) {
                /* ANSI C treats constant as unsigned, op %s */
                warning(218, mp->m_name);
-               ln->tn_val->v_unsigned = false;
+               ln->tn_val->v_unsigned_since_c90 = false;
        }
        if (mp->m_warn_if_right_unsigned_in_c90 &&
-           rn->tn_op == CON && rn->tn_val->v_unsigned) {
+           rn->tn_op == CON && rn->tn_val->v_unsigned_since_c90) {
                /* ANSI C treats constant as unsigned, op %s */
                warning(218, mp->m_name);
-               rn->tn_val->v_unsigned = false;
+               rn->tn_val->v_unsigned_since_c90 = false;
        }
 
        /* Make sure both operands are of the same type */
@@ -2364,7 +2364,7 @@ convert_constant(op_t op, int arg, const
        range_check = false;
 
        if (nt == BOOL) {       /* C99 6.3.1.2 */
-               nv->v_unsigned = false;
+               nv->v_unsigned_since_c90 = false;
                nv->v_quad = is_nonzero_val(v) ? 1 : 0;
                return;
        }
@@ -2376,13 +2376,13 @@ convert_constant(op_t op, int arg, const
                nv->v_quad = v->v_quad;
        }
 
-       if ((v->v_unsigned && is_floating(nt)) ||
-           (v->v_unsigned && (is_integer(nt) && !is_uinteger(nt) &&
+       if ((v->v_unsigned_since_c90 && is_floating(nt)) ||
+           (v->v_unsigned_since_c90 && (is_integer(nt) && !is_uinteger(nt) &&
                            portable_size_in_bits(nt) >
                            portable_size_in_bits(ot)))) {
                /* ANSI C treats constant as unsigned */
                warning(157);
-               v->v_unsigned = false;
+               v->v_unsigned_since_c90 = false;
        }
 
        switch (nt) {
@@ -3618,7 +3618,8 @@ constant(tnode_t *tn, bool required)
        if (tn->tn_op == CON) {
                lint_assert(tn->tn_type->t_tspec == tn->tn_val->v_tspec);
                if (is_integer(tn->tn_val->v_tspec)) {
-                       v->v_unsigned = tn->tn_val->v_unsigned;
+                       v->v_unsigned_since_c90 =
+                           tn->tn_val->v_unsigned_since_c90;
                        v->v_quad = tn->tn_val->v_quad;
                        return v;
                }



Home | Main Index | Thread Index | Old Index