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: remove redundant operator properti...



details:   https://anonhg.NetBSD.org/src/rev/b01c9ebfebd6
branches:  trunk
changeset: 981771:b01c9ebfebd6
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Mar 20 20:39:35 2021 +0000

description:
lint: remove redundant operator properties table

It's enough to have modtab, which describes the properties of the
various operators.  There is no need to have a second table imods that
holds the same content.  Rather make modtab constant as well.

The only possible functional change is that the names of the internal
operators 'no-op', '++', '--', 'real', 'imag' and 'case' may appear in
diagnostics, where previously lint invoked undefined behavior by passing
a null pointer for a '%s' conversion specifier.

diffstat:

 usr.bin/xlint/lint1/main1.c |    5 +-
 usr.bin/xlint/lint1/op.h    |    8 +-
 usr.bin/xlint/lint1/oper.c  |   28 +------
 usr.bin/xlint/lint1/ops.def |  140 ++++++++++++++++++++++----------------------
 usr.bin/xlint/lint1/tree.c  |   18 ++--
 5 files changed, 90 insertions(+), 109 deletions(-)

diffs (truncated from 356 to 300 lines):

diff -r a124abbfd0ed -r b01c9ebfebd6 usr.bin/xlint/lint1/main1.c
--- a/usr.bin/xlint/lint1/main1.c       Sat Mar 20 20:15:37 2021 +0000
+++ b/usr.bin/xlint/lint1/main1.c       Sat Mar 20 20:39:35 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main1.c,v 1.37 2021/01/16 16:53:23 rillig Exp $        */
+/*     $NetBSD: main1.c,v 1.38 2021/03/20 20:39:35 rillig Exp $        */
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: main1.c,v 1.37 2021/01/16 16:53:23 rillig Exp $");
+__RCSID("$NetBSD: main1.c,v 1.38 2021/03/20 20:39:35 rillig Exp $");
 #endif
 
 #include <sys/types.h>
@@ -253,7 +253,6 @@
        initmem();
        initdecl();
        initscan();
-       initmtab();
 
        if ((yyin = bltin()) == NULL)
                err(1, "cannot open builtins");
diff -r a124abbfd0ed -r b01c9ebfebd6 usr.bin/xlint/lint1/op.h
--- a/usr.bin/xlint/lint1/op.h  Sat Mar 20 20:15:37 2021 +0000
+++ b/usr.bin/xlint/lint1/op.h  Sat Mar 20 20:39:35 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: op.h,v 1.14 2021/03/20 20:15:37 rillig Exp $   */
+/*     $NetBSD: op.h,v 1.15 2021/03/20 20:39:35 rillig Exp $   */
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -60,7 +60,7 @@
        const char *m_name;
 } mod_t;
 
-extern mod_t   modtab[];
+extern const mod_t modtab[];
 
 #define begin_ops() typedef enum {
 #define op(name, repr, \
@@ -68,11 +68,9 @@
                in, ic, ar, sc, \
                fo, va, ts, ba, \
                se, lu, ru, pc, \
-               cm, ve, de, ew, \
-               active) \
+               cm, ve, de, ew) \
        name,
 #define end_ops() } op_t;
 #include "ops.def"
 
 const char *getopname(op_t);
-void initmtab(void);
diff -r a124abbfd0ed -r b01c9ebfebd6 usr.bin/xlint/lint1/oper.c
--- a/usr.bin/xlint/lint1/oper.c        Sat Mar 20 20:15:37 2021 +0000
+++ b/usr.bin/xlint/lint1/oper.c        Sat Mar 20 20:39:35 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: oper.c,v 1.7 2021/03/20 20:15:37 rillig Exp $  */
+/*     $NetBSD: oper.c,v 1.8 2021/03/20 20:39:35 rillig Exp $  */
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -33,27 +33,21 @@
 #include "op.h"
 #include "param.h"
 
-mod_t modtab[NOPS];
-
-static const struct {
-       mod_t   m;
-       bool    ok;
-} imods[] =
+const mod_t modtab[NOPS] =
 #define begin_ops() {
 #define op(name, repr, \
                bi, lo, tb, rb, \
                in, ic, ar, sc, \
                fo, va, ts, ba, \
                se, lu, ru, pc, \
-               cm, ve, de, ew, \
-               active) \
-       { { \
+               cm, ve, de, ew) \
+       { \
                bi + 0 > 0, lo + 0 > 0, tb + 0 > 0, rb + 0 > 0, \
                in + 0 > 0, ic + 0 > 0, ar + 0 > 0, sc + 0 > 0, \
                fo + 0 > 0, va + 0 > 0, ts + 0 > 0, ba + 0 > 0, \
                se + 0 > 0, lu + 0 > 0, ru + 0 > 0, pc + 0 > 0, \
                cm + 0 > 0, ve + 0 > 0, de + 0 > 0, ew + 0 > 0, \
-               repr }, (active) > 0 \
+               repr, \
        },
 #define end_ops(n) };
 #include "ops.def"
@@ -61,15 +55,5 @@
 const char *
 getopname(op_t op)
 {
-       return imods[op].m.m_name;
+       return modtab[op].m_name;
 }
-
-void
-initmtab(void)
-{
-       size_t i;
-
-       for (i = 0; i < sizeof imods / sizeof imods[0]; i++)
-               if (imods[i].ok)
-                       modtab[i] = imods[i].m;
-}
diff -r a124abbfd0ed -r b01c9ebfebd6 usr.bin/xlint/lint1/ops.def
--- a/usr.bin/xlint/lint1/ops.def       Sat Mar 20 20:15:37 2021 +0000
+++ b/usr.bin/xlint/lint1/ops.def       Sat Mar 20 20:39:35 2021 +0000
@@ -1,86 +1,86 @@
-/*     $NetBSD: ops.def,v 1.18 2021/03/20 20:15:37 rillig Exp $ */
+/*     $NetBSD: ops.def,v 1.19 2021/03/20 20:39:35 rillig Exp $ */
 
 begin_ops()
 
 /* See mod_t in op.h for the definition of the table columns. */
 
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    NOOP,   "no-op",         , , , , , , , , , , , , , , , , , , , ,0)
-op(    ARROW,  "->",           1, ,1, , , , , , ,1, , , , , , , , , , ,1)
-op(    POINT,  ".",            1, ,1, , , , , , , , , , , , , , , , , ,1)
-op(    NOT,    "!",             ,1,1,1, , , ,1,1, ,1, , , , , , , ,1, ,1)
-op(    COMPL,  "~",             , , , , ,1, , ,1,1, , , , , , , , ,1,1,1)
-op(    INC,    "++",            , , , , , , , , , , , , , , , , , , , ,0)
-op(    DEC,    "--",            , , , , , , , , , , , , , , , , , , , ,0)
-op(    INCBEF, "++x",           , , , , , , ,1, , , , ,1, , , , , ,1, ,1)
-op(    DECBEF, "--x",           , , , , , , ,1, , , , ,1, , , , , ,1, ,1)
-op(    INCAFT, "x++",           , , , , , , ,1, , , , ,1, , , , , ,1, ,1)
-op(    DECAFT, "x--",           , , , , , , ,1, , , , ,1, , , , , ,1, ,1)
-op(    UPLUS,  "+",             , , , , , ,1, ,1,1, , , , , , , , ,1,1,1)
-op(    UMINUS, "-",             , , , , , ,1, ,1,1, , , ,1, , , , ,1,1,1)
-op(    INDIR,  "*",             , , , , , , , , ,1, , , , , , , , , , ,1)
-op(    ADDR,   "&",             , ,1, , , , , , , , , , , , , , , , , ,1)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    NOOP,   "no-op",         , , , , , , , , , , , , , , , , , , , )
+op(    ARROW,  "->",           1, ,1, , , , , , ,1, , , , , , , , , , )
+op(    POINT,  ".",            1, ,1, , , , , , , , , , , , , , , , , )
+op(    NOT,    "!",             ,1,1,1, , , ,1,1, ,1, , , , , , , ,1, )
+op(    COMPL,  "~",             , , , , ,1, , ,1,1, , , , , , , , ,1,1)
+op(    INC,    "++",            , , , , , , , , , , , , , , , , , , , )
+op(    DEC,    "--",            , , , , , , , , , , , , , , , , , , , )
+op(    INCBEF, "++x",           , , , , , , ,1, , , , ,1, , , , , ,1, )
+op(    DECBEF, "--x",           , , , , , , ,1, , , , ,1, , , , , ,1, )
+op(    INCAFT, "x++",           , , , , , , ,1, , , , ,1, , , , , ,1, )
+op(    DECAFT, "x--",           , , , , , , ,1, , , , ,1, , , , , ,1, )
+op(    UPLUS,  "+",             , , , , , ,1, ,1,1, , , , , , , , ,1,1)
+op(    UMINUS, "-",             , , , , , ,1, ,1,1, , , ,1, , , , ,1,1)
+op(    INDIR,  "*",             , , , , , , , , ,1, , , , , , , , , , )
+op(    ADDR,   "&",             , ,1, , , , , , , , , , , , , , , , , )
 /* the operator 'arr[ind]' is translated to '*(arr + ind)' during parsing. */
 
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    MULT,   "*",            1, , , , , ,1, ,1,1, ,1, , ,1, , , ,1,1,1)
-op(    DIV,    "/",            1, , , , , ,1, ,1,1, ,1, ,1,1, , , ,1,1,1)
-op(    MOD,    "%",            1, , , ,1, , , ,1,1, ,1, ,1,1, , , ,1,1,1)
-op(    PLUS,   "+",            1, , , , , , ,1,1,1, ,1, , , , , , ,1, ,1)
-op(    MINUS,  "-",            1, , , , , , ,1,1,1, ,1, , , , , , ,1, ,1)
-op(    SHL,    "<<",           1, , , ,1, , , ,1,1, , , , , ,1, , ,1,1,1)
-op(    SHR,    ">>",           1, , , ,1, , , ,1,1, , , ,1, ,1, , ,1,1,1)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    MULT,   "*",            1, , , , , ,1, ,1,1, ,1, , ,1, , , ,1,1)
+op(    DIV,    "/",            1, , , , , ,1, ,1,1, ,1, ,1,1, , , ,1,1)
+op(    MOD,    "%",            1, , , ,1, , , ,1,1, ,1, ,1,1, , , ,1,1)
+op(    PLUS,   "+",            1, , , , , , ,1,1,1, ,1, , , , , , ,1, )
+op(    MINUS,  "-",            1, , , , , , ,1,1,1, ,1, , , , , , ,1, )
+op(    SHL,    "<<",           1, , , ,1, , , ,1,1, , , , , ,1, , ,1,1)
+op(    SHR,    ">>",           1, , , ,1, , , ,1,1, , , ,1, ,1, , ,1,1)
 
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    LT,     "<",            1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1,1)
-op(    LE,     "<=",           1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1,1)
-op(    GT,     ">",            1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1,1)
-op(    GE,     ">=",           1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1,1)
-op(    EQ,     "==",           1,1,1, , , , ,1,1,1, ,1, , , , ,1,1, ,1,1)
-op(    NE,     "!=",           1,1,1, , , , ,1,1,1, ,1, , , , ,1,1, ,1,1)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    LT,     "<",            1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1)
+op(    LE,     "<=",           1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1)
+op(    GT,     ">",            1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1)
+op(    GE,     ">=",           1,1, , , , , ,1,1,1, ,1, ,1,1, ,1,1, ,1)
+op(    EQ,     "==",           1,1,1, , , , ,1,1,1, ,1, , , , ,1,1, ,1)
+op(    NE,     "!=",           1,1,1, , , , ,1,1,1, ,1, , , , ,1,1, ,1)
 
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    BITAND, "&",            1, ,1, ,1, , , ,1,1, ,1, , , ,1, , ,1, ,1)
-op(    BITXOR, "^",            1, ,1, ,1, , , ,1,1, ,1, , , ,1, , ,1, ,1)
-op(    BITOR,  "|",            1, ,1, ,1, , , ,1,1, ,1, , , ,1, , ,1, ,1)
-op(    LOGAND, "&&",           1,1,1,1, , , ,1,1, ,1, , , , , , , ,1, ,1)
-op(    LOGOR,  "||",           1,1,1,1, , , ,1,1, ,1, , , , ,1, , ,1, ,1)
-op(    QUEST,  "?",            1, , , , , , , ,1, ,1, , , , , , , , , ,1)
-op(    COLON,  ":",            1, ,1, , , , , , ,1, ,1, , , , , ,1, , ,1)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    BITAND, "&",            1, ,1, ,1, , , ,1,1, ,1, , , ,1, , ,1, )
+op(    BITXOR, "^",            1, ,1, ,1, , , ,1,1, ,1, , , ,1, , ,1, )
+op(    BITOR,  "|",            1, ,1, ,1, , , ,1,1, ,1, , , ,1, , ,1, )
+op(    LOGAND, "&&",           1,1,1,1, , , ,1,1, ,1, , , , , , , ,1, )
+op(    LOGOR,  "||",           1,1,1,1, , , ,1,1, ,1, , , , ,1, , ,1, )
+op(    QUEST,  "?",            1, , , , , , , ,1, ,1, , , , , , , , , )
+op(    COLON,  ":",            1, ,1, , , , , , ,1, ,1, , , , , ,1, , )
 
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    ASSIGN, "=",            1, ,1, , , , , , , , , ,1, , , , ,1, , ,1)
-op(    MULASS, "*=",           1, , , , , ,1, , , , , ,1, , , , , ,1, ,1)
-op(    DIVASS, "/=",           1, , , , , ,1, , , , , ,1, ,1, , , ,1, ,1)
-op(    MODASS, "%=",           1, , , ,1, , , , , , , ,1, ,1, , , ,1, ,1)
-op(    ADDASS, "+=",           1, , , , , , ,1, , , , ,1, , , , , ,1, ,1)
-op(    SUBASS, "-=",           1, , , , , , ,1, , , , ,1, , , , , ,1, ,1)
-op(    SHLASS, "<<=",          1, , , ,1, , , , , , , ,1, , , , , ,1, ,1)
-op(    SHRASS, ">>=",          1, , , ,1, , , , , , , ,1, , , , , ,1, ,1)
-op(    ANDASS, "&=",           1, ,1, ,1, , , , , , , ,1, , , , , ,1, ,1)
-op(    XORASS, "^=",           1, ,1, ,1, , , , , , , ,1, , , , , ,1, ,1)
-op(    ORASS,  "|=",           1, ,1, ,1, , , , , , , ,1, , , , , ,1, ,1)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    ASSIGN, "=",            1, ,1, , , , , , , , , ,1, , , , ,1, , )
+op(    MULASS, "*=",           1, , , , , ,1, , , , , ,1, , , , , ,1, )
+op(    DIVASS, "/=",           1, , , , , ,1, , , , , ,1, ,1, , , ,1, )
+op(    MODASS, "%=",           1, , , ,1, , , , , , , ,1, ,1, , , ,1, )
+op(    ADDASS, "+=",           1, , , , , , ,1, , , , ,1, , , , , ,1, )
+op(    SUBASS, "-=",           1, , , , , , ,1, , , , ,1, , , , , ,1, )
+op(    SHLASS, "<<=",          1, , , ,1, , , , , , , ,1, , , , , ,1, )
+op(    SHRASS, ">>=",          1, , , ,1, , , , , , , ,1, , , , , ,1, )
+op(    ANDASS, "&=",           1, ,1, ,1, , , , , , , ,1, , , , , ,1, )
+op(    XORASS, "^=",           1, ,1, ,1, , , , , , , ,1, , , , , ,1, )
+op(    ORASS,  "|=",           1, ,1, ,1, , , , , , , ,1, , , , , ,1, )
 
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    NAME,   "name",          , , , , , , , , , , , , , , , , , , , ,1)
-op(    CON,    "constant",      , , , , , , , , , , , , , , , , , , , ,1)
-op(    STRING, "string",        , , , , , , , , , , , , , , , , , , , ,1)
-op(    FSEL,   "fsel",          , , , , , , , , , , , , , , , , , , , ,1)
-op(    CALL,   "call",         1, , , , , , , , , , , ,1, , , , , , , ,1)
-op(    COMMA,  ",",            1, ,1, , , , , , , , , , , , , , , , ,1,1)
-op(    CVT,    "convert",       , , , , , , , , ,1, , , , , , , , , , ,1)
-op(    ICALL,  "icall",        1, , , , , , , , , , , ,1, , , , , , , ,1)
-op(    LOAD,   "load",          , , , , , , , , , , , , , , , , , , , ,1)
-op(    PUSH,   "push",          , , , , , , , , ,1, , , , , , , , , , ,1)
-op(    RETURN, "return",       1, ,1, , , , , , , , , ,1, , , , ,1, , ,1)
-op(    REAL,   "real",          , , , , , , , , , , , , , , , , , , , ,0)
-op(    IMAG,   "imag",          , , , , , , , , , , , , , , , , , , , ,0)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    NAME,   "name",          , , , , , , , , , , , , , , , , , , , )
+op(    CON,    "constant",      , , , , , , , , , , , , , , , , , , , )
+op(    STRING, "string",        , , , , , , , , , , , , , , , , , , , )
+op(    FSEL,   "fsel",          , , , , , , , , , , , , , , , , , , , )
+op(    CALL,   "call",         1, , , , , , , , , , , ,1, , , , , , , )
+op(    COMMA,  ",",            1, ,1, , , , , , , , , , , , , , , , ,1)
+op(    CVT,    "convert",       , , , , , , , , ,1, , , , , , , , , , )
+op(    ICALL,  "icall",        1, , , , , , , , , , , ,1, , , , , , , )
+op(    LOAD,   "load",          , , , , , , , , , , , , , , , , , , , )
+op(    PUSH,   "push",          , , , , , , , , ,1, , , , , , , , , , )
+op(    RETURN, "return",       1, ,1, , , , , , , , , ,1, , , , ,1, , )
+op(    REAL,   "real",          , , , , , , , , , , , , , , , , , , , )
+op(    IMAG,   "imag",          , , , , , , , , , , , , , , , , , , , )
 
 /* INIT, CASE and FARG are pseudo operators that don't appear in the tree. */
-/*     name    repr            b l b B i c a s f v t b s l r p c e e = act */
-op(    INIT,   "init",         1, ,1, , , , , , , , , , , , , , ,1, , ,1)
-op(    CASE,   "case",          , , , , , , , , , , , , , , , , , , , ,0)
-op(    FARG,   "farg",         1, ,1, , , , , , , , , , , , , , ,1, , ,1)
+/*     name    repr            b l b B i c a s f v t b s l r p c e e = */
+op(    INIT,   "init",         1, ,1, , , , , , , , , , , , , , ,1, , )
+op(    CASE,   "case",          , , , , , , , , , , , , , , , , , , , )
+op(    FARG,   "farg",         1, ,1, , , , , , , , , , , , , , ,1, , )
 
 end_ops()
 
diff -r a124abbfd0ed -r b01c9ebfebd6 usr.bin/xlint/lint1/tree.c
--- a/usr.bin/xlint/lint1/tree.c        Sat Mar 20 20:15:37 2021 +0000
+++ b/usr.bin/xlint/lint1/tree.c        Sat Mar 20 20:39:35 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tree.c,v 1.239 2021/03/20 18:38:25 rillig Exp $        */
+/*     $NetBSD: tree.c,v 1.240 2021/03/20 20:39:35 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.239 2021/03/20 18:38:25 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.240 2021/03/20 20:39:35 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -490,7 +490,7 @@
 tnode_t *
 build(op_t op, tnode_t *ln, tnode_t *rn)
 {
-       mod_t   *mp;
+       const mod_t *mp;
        tnode_t *ntn;



Home | Main Index | Thread Index | Old Index