Module Name: src Committed By: rillig Date: Wed Mar 17 01:38:31 UTC 2021
Modified Files: src/usr.bin/xlint/lint1: cgram.y decl.c externs1.h Log Message: lint: move main part of idecl over to decl.c and rename it No functional change. To generate a diff of this commit: cvs rdiff -u -r1.173 -r1.174 src/usr.bin/xlint/lint1/cgram.y cvs rdiff -u -r1.144 -r1.145 src/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.73 -r1.74 src/usr.bin/xlint/lint1/externs1.h 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.173 src/usr.bin/xlint/lint1/cgram.y:1.174 --- src/usr.bin/xlint/lint1/cgram.y:1.173 Wed Mar 17 01:22:55 2021 +++ src/usr.bin/xlint/lint1/cgram.y Wed Mar 17 01:38:31 2021 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.173 2021/03/17 01:22:55 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.174 2021/03/17 01:38:31 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.173 2021/03/17 01:22:55 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.174 2021/03/17 01:38:31 rillig Exp $"); #endif #include <limits.h> @@ -67,7 +67,7 @@ int mem_block_level; static int olwarn = LWARN_BAD; static int to_int_constant(tnode_t *, int); -static void idecl(sym_t *, int, sbuf_t *); +static void cgram_declare(sym_t *, bool, sbuf_t *); static void ignore_up_to_rparen(void); static sym_t *symbolrename(sym_t *, sbuf_t *); @@ -998,11 +998,11 @@ type_init_decls: notype_init_decl: notype_decl opt_asm_or_symbolrename { - idecl($1, 0, $2); + cgram_declare($1, false, $2); check_size($1); } | notype_decl opt_asm_or_symbolrename { - idecl($1, 1, $2); + cgram_declare($1, true, $2); } T_ASSIGN initializer { check_size($1); } @@ -1010,11 +1010,11 @@ notype_init_decl: type_init_decl: type_decl opt_asm_or_symbolrename { - idecl($1, 0, $2); + cgram_declare($1, false, $2); check_size($1); } | type_decl opt_asm_or_symbolrename { - idecl($1, 1, $2); + cgram_declare($1, true, $2); } T_ASSIGN initializer { check_size($1); } @@ -1975,7 +1975,7 @@ term: } | T_LPAREN type_name T_RPAREN %prec T_UNARY { sym_t *tmp = mktempsym($2); - idecl(tmp, 1, NULL); + cgram_declare(tmp, true, NULL); } init_lbrace init_expr_list init_rbrace { if (!Sflag) /* compound literals are a C9X/GCC extension */ @@ -2134,48 +2134,11 @@ done: } static void -idecl(sym_t *decl, int initflg, sbuf_t *renaming) +cgram_declare(sym_t *decl, bool initflg, sbuf_t *renaming) { - char *s; - - initerr = false; - initsym = decl; - - switch (dcs->d_ctx) { - case EXTERN: - if (renaming != NULL) { - lint_assert(decl->s_rename == NULL); - - s = getlblk(1, renaming->sb_len + 1); - (void)memcpy(s, renaming->sb_name, renaming->sb_len + 1); - decl->s_rename = s; - freeyyv(&renaming, T_NAME); - } - decl1ext(decl, initflg); - break; - case ARG: - if (renaming != NULL) { - /* symbol renaming can't be used on function arguments */ - error(310); - freeyyv(&renaming, T_NAME); - break; - } - (void)declare_argument(decl, initflg); - break; - default: - lint_assert(dcs->d_ctx == AUTO); - if (renaming != NULL) { - /* symbol renaming can't be used on automatic variables */ - error(311); - freeyyv(&renaming, T_NAME); - break; - } - declare_local(decl, initflg); - break; - } - - if (initflg && !initerr) - initstack_init(); + declare(decl, initflg, renaming); + if (renaming != NULL) + freeyyv(&renaming, T_NAME); } /* Index: src/usr.bin/xlint/lint1/decl.c diff -u src/usr.bin/xlint/lint1/decl.c:1.144 src/usr.bin/xlint/lint1/decl.c:1.145 --- src/usr.bin/xlint/lint1/decl.c:1.144 Wed Mar 17 01:15:31 2021 +++ src/usr.bin/xlint/lint1/decl.c Wed Mar 17 01:38:31 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.144 2021/03/17 01:15:31 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.145 2021/03/17 01:38:31 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.144 2021/03/17 01:15:31 rillig Exp $"); +__RCSID("$NetBSD: decl.c,v 1.145 2021/03/17 01:38:31 rillig Exp $"); #endif #include <sys/param.h> @@ -1881,6 +1881,48 @@ enumeration_constant(sym_t *sym, int val return sym; } +void +declare(sym_t *decl, bool initflg, sbuf_t *renaming) +{ + char *s; + + initerr = false; + initsym = decl; + + switch (dcs->d_ctx) { + case EXTERN: + if (renaming != NULL) { + lint_assert(decl->s_rename == NULL); + + s = getlblk(1, renaming->sb_len + 1); + (void)memcpy(s, renaming->sb_name, renaming->sb_len + 1); + decl->s_rename = s; + } + decl1ext(decl, initflg); + break; + case ARG: + if (renaming != NULL) { + /* symbol renaming can't be used on function arguments */ + error(310); + break; + } + (void)declare_argument(decl, initflg); + break; + default: + lint_assert(dcs->d_ctx == AUTO); + if (renaming != NULL) { + /* symbol renaming can't be used on automatic variables */ + error(311); + break; + } + declare_local(decl, initflg); + break; + } + + if (initflg && !initerr) + initstack_init(); +} + /* * Process a single external declarator. */ Index: src/usr.bin/xlint/lint1/externs1.h diff -u src/usr.bin/xlint/lint1/externs1.h:1.73 src/usr.bin/xlint/lint1/externs1.h:1.74 --- src/usr.bin/xlint/lint1/externs1.h:1.73 Wed Mar 17 01:15:31 2021 +++ src/usr.bin/xlint/lint1/externs1.h Wed Mar 17 01:38:31 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: externs1.h,v 1.73 2021/03/17 01:15:31 rillig Exp $ */ +/* $NetBSD: externs1.h,v 1.74 2021/03/17 01:38:31 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -171,6 +171,7 @@ extern const char *storage_class_name(sc extern type_t *complete_tag_struct_or_union(type_t *, sym_t *); extern type_t *complete_tag_enum(type_t *, sym_t *); extern sym_t *enumeration_constant(sym_t *, int, bool); +extern void declare(sym_t *, bool, sbuf_t *); extern void decl1ext(sym_t *, bool); extern void copy_usage_info(sym_t *, sym_t *); extern bool check_redeclaration(sym_t *, bool *);