Module Name: src Committed By: rillig Date: Sun Aug 29 10:13:02 UTC 2021
Modified Files: src/usr.bin/xlint/lint2: chk.c emit2.c lint2.h read.c Log Message: lint: un-abbreviate members of sym_t No functional change. To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/usr.bin/xlint/lint2/chk.c cvs rdiff -u -r1.22 -r1.23 src/usr.bin/xlint/lint2/emit2.c cvs rdiff -u -r1.18 -r1.19 src/usr.bin/xlint/lint2/lint2.h cvs rdiff -u -r1.56 -r1.57 src/usr.bin/xlint/lint2/read.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/lint2/chk.c diff -u src/usr.bin/xlint/lint2/chk.c:1.44 src/usr.bin/xlint/lint2/chk.c:1.45 --- src/usr.bin/xlint/lint2/chk.c:1.44 Sun Aug 22 04:43:44 2021 +++ src/usr.bin/xlint/lint2/chk.c Sun Aug 29 10:13:02 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: chk.c,v 1.44 2021/08/22 04:43:44 rillig Exp $ */ +/* $NetBSD: chk.c,v 1.45 2021/08/29 10:13:02 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: chk.c,v 1.44 2021/08/22 04:43:44 rillig Exp $"); +__RCSID("$NetBSD: chk.c,v 1.45 2021/08/29 10:13:02 rillig Exp $"); #endif #include <ctype.h> @@ -382,7 +382,8 @@ chkfaui(const hte_t *hte, sym_t *def, sy ap2 = tp2->t_args; n = 0; while (*ap1 != NULL && *ap2 != NULL) { - if (def != NULL && def->s_va && n >= def->s_nva) + if (def != NULL && def->s_check_only_first_args && + n >= def->s_check_num_args) break; n++; chkau(hte, n, def, decl, pos1p, call1, call, @@ -392,7 +393,8 @@ chkfaui(const hte_t *hte, sym_t *def, sy } if (*ap1 == *ap2) { /* equal # of arguments */ - } else if (def != NULL && def->s_va && n >= def->s_nva) { + } else if (def != NULL && def->s_check_only_first_args && + n >= def->s_check_num_args) { /* * function definition with VARARGS; The # of * arguments of the call must be at least as large @@ -413,16 +415,18 @@ chkfaui(const hte_t *hte, sym_t *def, sy } /* perform SCANFLIKE/PRINTFLIKE tests */ - if (def == NULL || (!def->s_prfl && !def->s_scfl)) + if (def == NULL || (!def->s_printflike && !def->s_scanflike)) continue; - as = def->s_prfl ? def->s_nprfl : def->s_nscfl; + as = def->s_printflike + ? def->s_printflike_arg + : def->s_scanflike_arg; for (ai = call->f_args; ai != NULL; ai = ai->a_next) { if (ai->a_num == as) break; } if (ai == NULL || !ai->a_fmt) continue; - if (def->s_prfl) { + if (def->s_printflike) { printflike(hte, call, n, ai->a_fstrg, ap2); } else { scanflike(hte, call, n, ai->a_fstrg, ap2); @@ -463,7 +467,7 @@ chkau(const hte_t *hte, int n, sym_t *de */ /* arg1 must be promoted if it stems from an old style definition */ - promote = def != NULL && def->s_osdef; + promote = def != NULL && def->s_old_style_function; /* * If we compare with a definition or declaration, we must perform @@ -1078,7 +1082,7 @@ chkrvu(const hte_t *hte, sym_t *def) if (hte->h_calls == NULL) return; - if (def->s_rval) { + if (def->s_function_has_return_value) { /* * XXX as soon as we are able to disable single warnings * the following dependencies from hflag should be removed. @@ -1130,7 +1134,7 @@ chkadecl(const hte_t *hte, sym_t *def, s osdef = false; if (def != NULL) { - osdef = def->s_osdef; + osdef = def->s_old_style_function; sym1 = def; } else if (decl != NULL && TP(decl->s_type)->t_proto) { sym1 = decl; @@ -1173,8 +1177,8 @@ chkadecl(const hte_t *hte, sym_t *def, s tp2 = TP(sym->s_type); if (tp1->t_vararg == tp2->t_vararg) continue; - if (tp2->t_vararg && - sym1->s_va && sym1->s_nva == n && !sflag) { + if (tp2->t_vararg && sym1->s_check_only_first_args && + sym1->s_check_num_args == n && !sflag) { continue; } } Index: src/usr.bin/xlint/lint2/emit2.c diff -u src/usr.bin/xlint/lint2/emit2.c:1.22 src/usr.bin/xlint/lint2/emit2.c:1.23 --- src/usr.bin/xlint/lint2/emit2.c:1.22 Sat Aug 28 17:18:42 2021 +++ src/usr.bin/xlint/lint2/emit2.c Sun Aug 29 10:13:02 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: emit2.c,v 1.22 2021/08/28 17:18:42 rillig Exp $ */ +/* $NetBSD: emit2.c,v 1.23 2021/08/29 10:13:02 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -34,7 +34,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: emit2.c,v 1.22 2021/08/28 17:18:42 rillig Exp $"); +__RCSID("$NetBSD: emit2.c,v 1.23 2021/08/29 10:13:02 rillig Exp $"); #endif #include "lint2.h" @@ -160,25 +160,25 @@ outdef(hte_t *hte, sym_t *sym) outint(0); /* flags */ - if (sym->s_va) { - outchar('v'); /* varargs */ - outint(sym->s_nva); + if (sym->s_check_only_first_args) { + outchar('v'); + outint(sym->s_check_num_args); } - if (sym->s_scfl) { - outchar('S'); /* scanflike */ - outint(sym->s_nscfl); + if (sym->s_scanflike) { + outchar('S'); + outint(sym->s_scanflike_arg); } - if (sym->s_prfl) { - outchar('P'); /* printflike */ - outint(sym->s_nprfl); + if (sym->s_printflike) { + outchar('P'); + outint(sym->s_printflike_arg); } /* definition or tentative definition */ outchar(sym->s_def == DEF ? 'd' : 't'); if (TP(sym->s_type)->t_tspec == FUNC) { - if (sym->s_rval) - outchar('r'); /* fkt. has return value */ - if (sym->s_osdef) - outchar('o'); /* old style definition */ + if (sym->s_function_has_return_value) + outchar('r'); + if (sym->s_old_style_function) + outchar('o'); } outchar('u'); /* used (no warning if not used) */ Index: src/usr.bin/xlint/lint2/lint2.h diff -u src/usr.bin/xlint/lint2/lint2.h:1.18 src/usr.bin/xlint/lint2/lint2.h:1.19 --- src/usr.bin/xlint/lint2/lint2.h:1.18 Sun Aug 29 09:48:02 2021 +++ src/usr.bin/xlint/lint2/lint2.h Sun Aug 29 10:13:02 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: lint2.h,v 1.18 2021/08/29 09:48:02 rillig Exp $ */ +/* $NetBSD: lint2.h,v 1.19 2021/08/29 10:13:02 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -103,14 +103,7 @@ typedef struct { unsigned short p_iline; /* line number in p_iline */ } pos_t; -/* - * Used for definitions and declarations - * - * To save memory, variable sized structures are used. If - * all s_va, s_prfl and s_scfl are not set, the memory allocated - * for a symbol is only large enough to keep the first member of - * struct sym, s_s. - */ +/* Used for definitions and declarations. */ typedef struct sym { struct { pos_t s_pos; /* pos of def./decl. */ @@ -119,30 +112,35 @@ typedef struct sym { #else def_t s_def; #endif - bool s_rval : 1; /* function has return value */ - bool s_inline : 1; /* function is inline */ - bool s_osdef : 1; /* old style function definition */ - bool s_static : 1; /* symbol is static */ - bool s_va : 1; /* check only first s_nva arguments */ - bool s_prfl : 1; /* printflike */ - bool s_scfl : 1; /* scanflike */ - unsigned short s_type; /* type */ + bool s_function_has_return_value : 1; + bool s_inline : 1; + bool s_old_style_function : 1; + bool s_static : 1; + bool s_check_only_first_args : 1; + bool s_printflike : 1; + bool s_scanflike : 1; + unsigned short s_type; + /* XXX: gap of 4 bytes on LP64 platforms */ struct sym *s_next; /* next symbol with same name */ } s_s; - short s_nva; - short s_nprfl; - short s_nscfl; + /* + * To save memory, the remaining members are only allocated if one of + * s_check_only_first_args, s_printflike and s_scanflike is set. + */ + short s_check_num_args; /* if s_check_only_first_args */ + short s_printflike_arg; /* if s_printflike */ + short s_scanflike_arg; /* if s_scanflike */ } sym_t; #define s_pos s_s.s_pos -#define s_rval s_s.s_rval -#define s_osdef s_s.s_osdef +#define s_function_has_return_value s_s.s_function_has_return_value +#define s_old_style_function s_s.s_old_style_function #define s_inline s_s.s_inline #define s_static s_s.s_static #define s_def s_s.s_def -#define s_va s_s.s_va -#define s_prfl s_s.s_prfl -#define s_scfl s_s.s_scfl +#define s_check_only_first_args s_s.s_check_only_first_args +#define s_printflike s_s.s_printflike +#define s_scanflike s_s.s_scanflike #define s_type s_s.s_type #define s_next s_s.s_next Index: src/usr.bin/xlint/lint2/read.c diff -u src/usr.bin/xlint/lint2/read.c:1.56 src/usr.bin/xlint/lint2/read.c:1.57 --- src/usr.bin/xlint/lint2/read.c:1.56 Sat Aug 28 12:21:53 2021 +++ src/usr.bin/xlint/lint2/read.c Sun Aug 29 10:13:02 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: read.c,v 1.56 2021/08/28 12:21:53 rillig Exp $ */ +/* $NetBSD: read.c,v 1.57 2021/08/29 10:13:02 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: read.c,v 1.56 2021/08/28 12:21:53 rillig Exp $"); +__RCSID("$NetBSD: read.c,v 1.57 2021/08/29 10:13:02 rillig Exp $"); #endif #include <ctype.h> @@ -407,14 +407,14 @@ decldef(pos_t *posp, const char *cp) sym.s_inline = true; break; case 'o': - if (sym.s_osdef) + if (sym.s_old_style_function) inperr("osdef"); - sym.s_osdef = true; + sym.s_old_style_function = true; break; case 'r': - if (sym.s_rval) - inperr("rval"); - sym.s_rval = true; + if (sym.s_function_has_return_value) + inperr("r"); + sym.s_function_has_return_value = true; break; case 's': if (sym.s_static) @@ -432,22 +432,22 @@ decldef(pos_t *posp, const char *cp) used = true; break; case 'v': - if (sym.s_va) - inperr("va"); - sym.s_va = true; - sym.s_nva = parse_short(&cp); + if (sym.s_check_only_first_args) + inperr("v"); + sym.s_check_only_first_args = true; + sym.s_check_num_args = parse_short(&cp); break; case 'P': - if (sym.s_prfl) - inperr("prfl"); - sym.s_prfl = true; - sym.s_nprfl = parse_short(&cp); + if (sym.s_printflike) + inperr("P"); + sym.s_printflike = true; + sym.s_printflike_arg = parse_short(&cp); break; case 'S': - if (sym.s_scfl) - inperr("scfl"); - sym.s_scfl = true; - sym.s_nscfl = parse_short(&cp); + if (sym.s_scanflike) + inperr("S"); + sym.s_scanflike = true; + sym.s_scanflike_arg = parse_short(&cp); break; } } @@ -507,11 +507,12 @@ decldef(pos_t *posp, const char *cp) } if (symp == NULL) { - /* allocsym does not reserve space for s_nva */ - if (sym.s_va || sym.s_prfl || sym.s_scfl) { + if (sym.s_check_only_first_args || + sym.s_printflike || sym.s_scanflike) { symp = xalloc(sizeof(*symp)); *symp = sym; } else { + /* no need to allocate memory for unused members */ symp = xalloc(sizeof(symp->s_s)); symp->s_s = sym.s_s; }