Module Name: src Committed By: rillig Date: Sat Apr 9 13:38:17 UTC 2022
Modified Files: src/usr.bin/xlint/lint1: cgram.y debug.c decl.c func.c lex.c lint1.h tree.c Log Message: lint: inline member access macros for sym_t Having the 'u.' explicitly in the code serves as a reminder that these members are only defined under certain conditions. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.388 -r1.389 src/usr.bin/xlint/lint1/cgram.y cvs rdiff -u -r1.11 -r1.12 src/usr.bin/xlint/lint1/debug.c cvs rdiff -u -r1.270 -r1.271 src/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.130 -r1.131 src/usr.bin/xlint/lint1/func.c cvs rdiff -u -r1.115 -r1.116 src/usr.bin/xlint/lint1/lex.c cvs rdiff -u -r1.144 -r1.145 src/usr.bin/xlint/lint1/lint1.h cvs rdiff -u -r1.419 -r1.420 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/cgram.y diff -u src/usr.bin/xlint/lint1/cgram.y:1.388 src/usr.bin/xlint/lint1/cgram.y:1.389 --- src/usr.bin/xlint/lint1/cgram.y:1.388 Wed Mar 9 00:20:48 2022 +++ src/usr.bin/xlint/lint1/cgram.y Sat Apr 9 13:38:17 2022 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.388 2022/03/09 00:20:48 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.389 2022/04/09 13:38:17 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: cgram.y,v 1.388 2022/03/09 00:20:48 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.389 2022/04/09 13:38:17 rillig Exp $"); #endif #include <limits.h> @@ -114,7 +114,7 @@ static void anonymize(sym_t *s) { for ( ; s != NULL; s = s->s_next) - s->s_sou_type = NULL; + s->u.s_sou_type = NULL; } #if defined(YYDEBUG) && (defined(YYBYACC) || defined(YYBISON)) Index: src/usr.bin/xlint/lint1/debug.c diff -u src/usr.bin/xlint/lint1/debug.c:1.11 src/usr.bin/xlint/lint1/debug.c:1.12 --- src/usr.bin/xlint/lint1/debug.c:1.11 Sat Apr 2 14:28:30 2022 +++ src/usr.bin/xlint/lint1/debug.c Sat Apr 9 13:38:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: debug.c,v 1.11 2022/04/02 14:28:30 rillig Exp $ */ +/* $NetBSD: debug.c,v 1.12 2022/04/09 13:38:17 rillig Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: debug.c,v 1.11 2022/04/02 14:28:30 rillig Exp $"); +__RCSID("$NetBSD: debug.c,v 1.12 2022/04/09 13:38:17 rillig Exp $"); #endif #include <stdlib.h> @@ -275,9 +275,9 @@ debug_sym(const char *prefix, const sym_ debug_printf(" value=%d", (int)sym->s_value.v_quad); if ((sym->s_scl == MOS || sym->s_scl == MOU) && - sym->s_sou_type != NULL) { - const char *tag = sym->s_sou_type->sou_tag->s_name; - const sym_t *def = sym->s_sou_type->sou_first_typedef; + sym->u.s_sou_type != NULL) { + const char *tag = sym->u.s_sou_type->sou_tag->s_name; + const sym_t *def = sym->u.s_sou_type->sou_first_typedef; if (tag == unnamed && def != NULL) debug_printf(" sou='typedef %s'", def->s_name); else @@ -287,12 +287,13 @@ debug_sym(const char *prefix, const sym_ if (sym->s_keyword != NULL) { int t = (int)sym->s_value.v_quad; if (t == T_TYPE || t == T_STRUCT_OR_UNION) - debug_printf(" %s", tspec_name(sym->s_tspec)); + debug_printf(" %s", tspec_name(sym->u.s_tspec)); else if (t == T_QUAL) - debug_printf(" %s", tqual_name(sym->s_tqual)); + debug_printf(" %s", tqual_name(sym->u.s_qualifier)); } - debug_word(sym->s_osdef && sym->s_args != NULL, "old-style-args"); + debug_word(sym->s_osdef && sym->u.s_old_style_args != NULL, + "old-style-args"); debug_printf("%s", suffix); } Index: src/usr.bin/xlint/lint1/decl.c diff -u src/usr.bin/xlint/lint1/decl.c:1.270 src/usr.bin/xlint/lint1/decl.c:1.271 --- src/usr.bin/xlint/lint1/decl.c:1.270 Sat Apr 9 13:22:05 2022 +++ src/usr.bin/xlint/lint1/decl.c Sat Apr 9 13:38:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.270 2022/04/09 13:22:05 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.271 2022/04/09 13:38:17 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: decl.c,v 1.270 2022/04/09 13:22:05 rillig Exp $"); +__RCSID("$NetBSD: decl.c,v 1.271 2022/04/09 13:38:17 rillig Exp $"); #endif #include <sys/param.h> @@ -1130,7 +1130,8 @@ declarator_1_struct_union(sym_t *dsym) lint_assert(dcs->d_redeclared_symbol->s_scl == MOS || dcs->d_redeclared_symbol->s_scl == MOU); - if (dsym->s_sou_type == dcs->d_redeclared_symbol->s_sou_type) { + if (dsym->u.s_sou_type == + dcs->d_redeclared_symbol->u.s_sou_type) { /* duplicate member name: %s */ error(33, dsym->s_name); rmsym(dcs->d_redeclared_symbol); @@ -1521,7 +1522,7 @@ old_style_function(sym_t *decl, sym_t *a */ if (args != NULL) { decl->s_osdef = true; - decl->s_args = args; + decl->u.s_old_style_args = args; } } else { if (args != NULL) @@ -1545,7 +1546,7 @@ check_function_definition(sym_t *sym, bo error(22); } sym->s_osdef = false; - sym->s_args = NULL; + sym->u.s_old_style_args = NULL; } } @@ -1574,7 +1575,7 @@ declarator_name(sym_t *sym) case MOS: case MOU: /* Set parent */ - sym->s_sou_type = dcs->d_tagtyp->t_str; + sym->u.s_sou_type = dcs->d_tagtyp->t_str; sym->s_def = DEF; sym->s_value.v_tspec = INT; sc = dcs->d_ctx; @@ -1857,8 +1858,8 @@ complete_tag_struct_or_union(type_t *tp, n = 0; for (mem = fmem; mem != NULL; mem = mem->s_next) { /* bind anonymous members to the structure */ - if (mem->s_sou_type == NULL) { - mem->s_sou_type = sp; + if (mem->u.s_sou_type == NULL) { + mem->u.s_sou_type = sp; if (mem->s_type->t_bitfield) { sp->sou_size_in_bits += bitfieldsize(&mem); if (mem == NULL) @@ -1993,8 +1994,9 @@ declare_extern(sym_t *dsym, bool initflg /* * If the old symbol stems from an old style function - * definition, we have remembered the params in rdsym->s_args - * and compare them with the params of the prototype. + * definition, we have remembered the params in + * rdsym->s_old_style_args and compare them with the params + * of the prototype. */ if (rdsym->s_osdef && dsym->s_type->t_proto) { redec = check_old_style_definition(rdsym, dsym); @@ -2021,7 +2023,8 @@ declare_extern(sym_t *dsym, bool initflg */ if (rdsym->s_osdef && !dsym->s_type->t_proto) { dsym->s_osdef = rdsym->s_osdef; - dsym->s_args = rdsym->s_args; + dsym->u.s_old_style_args = + rdsym->u.s_old_style_args; dsym->s_def_pos = rdsym->s_def_pos; } @@ -2347,7 +2350,7 @@ check_old_style_definition(sym_t *rdsym, int narg, nparg, n; bool dowarn, msg; - args = rdsym->s_args; + args = rdsym->u.s_old_style_args; pargs = dsym->s_type->t_args; msg = false; @@ -2576,7 +2579,7 @@ check_func_old_style_arguments(void) int narg, nparg; bool msg; - args = funcsym->s_args; + args = funcsym->u.s_old_style_args; pargs = funcsym->s_type->t_args; /* @@ -2627,7 +2630,7 @@ check_func_old_style_arguments(void) /* from now on the prototype is valid */ funcsym->s_osdef = false; - funcsym->s_args = NULL; + funcsym->u.s_old_style_args = NULL; } } Index: src/usr.bin/xlint/lint1/func.c diff -u src/usr.bin/xlint/lint1/func.c:1.130 src/usr.bin/xlint/lint1/func.c:1.131 --- src/usr.bin/xlint/lint1/func.c:1.130 Sat Apr 2 20:12:46 2022 +++ src/usr.bin/xlint/lint1/func.c Sat Apr 9 13:38:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: func.c,v 1.130 2022/04/02 20:12:46 rillig Exp $ */ +/* $NetBSD: func.c,v 1.131 2022/04/09 13:38:17 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: func.c,v 1.130 2022/04/02 20:12:46 rillig Exp $"); +__RCSID("$NetBSD: func.c,v 1.131 2022/04/09 13:38:17 rillig Exp $"); #endif #include <stdlib.h> @@ -248,7 +248,7 @@ funcdef(sym_t *fsym) * style function definition or only an old style declaration, * if there are no arguments inside the argument list ("f()"). */ - if (!fsym->s_type->t_proto && fsym->s_args == NULL) + if (!fsym->s_type->t_proto && fsym->u.s_old_style_args == NULL) fsym->s_osdef = true; check_type(fsym); Index: src/usr.bin/xlint/lint1/lex.c diff -u src/usr.bin/xlint/lint1/lex.c:1.115 src/usr.bin/xlint/lint1/lex.c:1.116 --- src/usr.bin/xlint/lint1/lex.c:1.115 Sat Apr 2 14:28:30 2022 +++ src/usr.bin/xlint/lint1/lex.c Sat Apr 9 13:38:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex.c,v 1.115 2022/04/02 14:28:30 rillig Exp $ */ +/* $NetBSD: lex.c,v 1.116 2022/04/09 13:38:17 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.115 2022/04/02 14:28:30 rillig Exp $"); +__RCSID("$NetBSD: lex.c,v 1.116 2022/04/09 13:38:17 rillig Exp $"); #endif #include <ctype.h> @@ -395,11 +395,11 @@ add_keyword(const struct keyword *kw, bo sym->s_keyword = kw; sym->s_value.v_quad = kw->kw_token; if (kw->kw_token == T_TYPE || kw->kw_token == T_STRUCT_OR_UNION) { - sym->s_tspec = kw->kw_tspec; + sym->u.s_tspec = kw->kw_tspec; } else if (kw->kw_token == T_SCLASS) { sym->s_scl = kw->kw_scl; } else if (kw->kw_token == T_QUAL) { - sym->s_tqual = kw->kw_tqual; + sym->u.s_qualifier = kw->kw_tqual; } symtab_add(sym); @@ -457,9 +457,9 @@ lex_keyword(sym_t *sym) if ((t = (int)sym->s_value.v_quad) == T_SCLASS) { yylval.y_scl = sym->s_scl; } else if (t == T_TYPE || t == T_STRUCT_OR_UNION) { - yylval.y_tspec = sym->s_tspec; + yylval.y_tspec = sym->u.s_tspec; } else if (t == T_QUAL) { - yylval.y_tqual = sym->s_tqual; + yylval.y_tqual = sym->u.s_qualifier; } return t; } Index: src/usr.bin/xlint/lint1/lint1.h diff -u src/usr.bin/xlint/lint1/lint1.h:1.144 src/usr.bin/xlint/lint1/lint1.h:1.145 --- src/usr.bin/xlint/lint1/lint1.h:1.144 Sat Apr 2 22:15:57 2022 +++ src/usr.bin/xlint/lint1/lint1.h Sat Apr 9 13:38:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lint1.h,v 1.144 2022/04/02 22:15:57 rillig Exp $ */ +/* $NetBSD: lint1.h,v 1.145 2022/04/09 13:38:17 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -246,11 +246,11 @@ typedef struct sym { val_t s_value; /* value (if enum or bool constant) */ union { /* XXX: what is the difference to s_type->t_str? */ - struct_or_union *_s_st; - tspec_t _s_tsp; /* type (only for keywords) */ - tqual_t _s_tqu; /* qualifier (only for keywords) */ - struct sym *_s_args; /* arguments in old style function - definitions */ + struct_or_union *s_sou_type; + tspec_t s_tspec; /* type (only for keywords) */ + tqual_t s_qualifier; /* qualifier (only for keywords) */ + struct sym *s_old_style_args; /* arguments in old style + * function definitions */ } u; struct sym *s_symtab_next; /* next symbol with same hash value */ struct sym **s_symtab_ref; /* pointer to s_symtab_next of the @@ -261,11 +261,6 @@ typedef struct sym { * level */ } sym_t; -#define s_sou_type u._s_st -#define s_tspec u._s_tsp -#define s_tqual u._s_tqu -#define s_args u._s_args - /* * Used to keep some information about symbols before they are entered * into the symbol table. Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.419 src/usr.bin/xlint/lint1/tree.c:1.420 --- src/usr.bin/xlint/lint1/tree.c:1.419 Sat Apr 9 13:22:05 2022 +++ src/usr.bin/xlint/lint1/tree.c Sat Apr 9 13:38:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.419 2022/04/09 13:22:05 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.420 2022/04/09 13:38:17 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.419 2022/04/09 13:22:05 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.420 2022/04/09 13:38:17 rillig Exp $"); #endif #include <float.h> @@ -350,10 +350,10 @@ struct_or_union_member(tnode_t *tn, op_t rmsym(msym); msym->s_kind = FMEMBER; msym->s_scl = MOS; - msym->s_sou_type = expr_zero_alloc(sizeof(*msym->s_sou_type)); - msym->s_sou_type->sou_tag = expr_zero_alloc( - sizeof(*msym->s_sou_type->sou_tag)); - msym->s_sou_type->sou_tag->s_name = unnamed; + msym->u.s_sou_type = expr_zero_alloc(sizeof(*msym->u.s_sou_type)); + msym->u.s_sou_type->sou_tag = expr_zero_alloc( + sizeof(*msym->u.s_sou_type->sou_tag)); + msym->u.s_sou_type->sou_tag->s_name = unnamed; msym->s_value.v_tspec = INT; return msym; } @@ -377,7 +377,7 @@ struct_or_union_member(tnode_t *tn, op_t for (sym = msym; sym != NULL; sym = sym->s_symtab_next) { if (sym->s_scl != MOS && sym->s_scl != MOU) continue; - if (sym->s_sou_type != str) + if (sym->u.s_sou_type != str) continue; if (strcmp(sym->s_name, msym->s_name) != 0) continue;