Module Name:    src
Committed By:   rillig
Date:           Tue Aug  1 19:57:38 UTC 2023

Modified Files:
        src/usr.bin/xlint/lint1: decl.c lint1.h

Log Message:
lint: clear global variable 'dcs' after use

Having unnecessarily set members is confusing during debugging.


To generate a diff of this commit:
cvs rdiff -u -r1.371 -r1.372 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.197 -r1.198 src/usr.bin/xlint/lint1/lint1.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/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.371 src/usr.bin/xlint/lint1/decl.c:1.372
--- src/usr.bin/xlint/lint1/decl.c:1.371	Tue Aug  1 16:08:58 2023
+++ src/usr.bin/xlint/lint1/decl.c	Tue Aug  1 19:57:38 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.371 2023/08/01 16:08:58 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.372 2023/08/01 19:57:38 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: decl.c,v 1.371 2023/08/01 16:08:58 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.372 2023/08/01 19:57:38 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -609,12 +609,18 @@ dcs_begin_type(void)
 	dcs->d_rank_mod = NO_TSPEC;
 	dcs->d_scl = NOSCL;
 	dcs->d_type = NULL;
+	dcs->d_redeclared_symbol = NULL;
 	dcs->d_qual = (type_qualifiers) { .tq_const = false };
 	dcs->d_inline = false;
 	dcs->d_multiple_storage_classes = false;
 	dcs->d_invalid_type_combination = false;
 	dcs->d_nonempty_decl = false;
 	dcs->d_no_type_specifier = false;
+	dcs->d_packed = false;
+	dcs->d_used = false;
+	dcs->d_func_args = NULL;
+	dcs->d_func_def_pos = (pos_t){ NULL, 0, 0 };
+	dcs->d_func_proto_syms = NULL;
 }
 
 static void
@@ -1380,6 +1386,7 @@ add_function(sym_t *decl, struct paramet
 	    decl->s_type == dcs->d_enclosing->d_type) {
 		dcs->d_enclosing->d_func_proto_syms = dcs->d_first_dlsym;
 		dcs->d_enclosing->d_func_args = params.first;
+		debug_dcs_all();
 	}
 
 	/*

Index: src/usr.bin/xlint/lint1/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.197 src/usr.bin/xlint/lint1/lint1.h:1.198
--- src/usr.bin/xlint/lint1/lint1.h:1.197	Sat Jul 29 10:34:24 2023
+++ src/usr.bin/xlint/lint1/lint1.h	Tue Aug  1 19:57:38 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.197 2023/07/29 10:34:24 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.198 2023/08/01 19:57:38 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -390,13 +390,15 @@ typedef	struct decl_level {
 	bool	d_used:1;
 	type_t	*d_tag_type;	/* during a member declaration, the tag type to
 				 * which the member belongs */
-	sym_t	*d_func_args;	/* during a function declaration, the list of
-				 * arguments */
+	sym_t	*d_func_args;	/* during a function declaration, the
+				 * parameters, stored in the enclosing level */
 	pos_t	d_func_def_pos;	/* position of the function definition */
 	sym_t	*d_first_dlsym;	/* first symbol declared at this level */
 	sym_t	**d_last_dlsym;	/* points to s_level_next in the last symbol
 				   declaration at this level */
-	sym_t	*d_func_proto_syms; /* symbols defined in prototype */
+	sym_t	*d_func_proto_syms;	/* symbols defined in prototype, such
+					 * as tagged types or parameter names,
+					 * may overlap d_func_args */
 	struct decl_level *d_enclosing; /* the enclosing declaration level */
 } decl_level;
 

Reply via email to