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 *);