Module Name:    src
Committed By:   rillig
Date:           Tue Aug  1 16:08:58 UTC 2023

Modified Files:
        src/usr.bin/xlint/lint1: cgram.y debug.c decl.c externs1.h lex.c

Log Message:
lint: improve debug logging for declarators


To generate a diff of this commit:
cvs rdiff -u -r1.466 -r1.467 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.58 -r1.59 src/usr.bin/xlint/lint1/debug.c
cvs rdiff -u -r1.370 -r1.371 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.203 -r1.204 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.189 -r1.190 src/usr.bin/xlint/lint1/lex.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.466 src/usr.bin/xlint/lint1/cgram.y:1.467
--- src/usr.bin/xlint/lint1/cgram.y:1.466	Fri Jul 28 21:50:03 2023
+++ src/usr.bin/xlint/lint1/cgram.y	Tue Aug  1 16:08:58 2023
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.466 2023/07/28 21:50:03 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.467 2023/08/01 16:08:58 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: cgram.y,v 1.466 2023/07/28 21:50:03 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.467 2023/08/01 16:08:58 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -163,7 +163,11 @@ is_either(const char *s, const char *a, 
 		fprintf(yyo, "%Lg", $$->u.floating);
 } <y_val>
 %printer { fprintf(yyo, "'%s'", $$ != NULL ? $$->sb_name : "<null>"); } <y_name>
-%printer { debug_sym("", $$, ""); } <y_sym>
+%printer {
+	bool indented = debug_push_indented(true);
+	debug_sym("", $$, "");
+	debug_pop_indented(indented);
+} <y_sym>
 %printer { fprintf(yyo, "%s", op_name($$)); } <y_op>
 %printer { fprintf(yyo, "%s", scl_name($$)); } <y_scl>
 %printer { fprintf(yyo, "%s", tspec_name($$)); } <y_tspec>

Index: src/usr.bin/xlint/lint1/debug.c
diff -u src/usr.bin/xlint/lint1/debug.c:1.58 src/usr.bin/xlint/lint1/debug.c:1.59
--- src/usr.bin/xlint/lint1/debug.c:1.58	Sun Jul 30 22:27:21 2023
+++ src/usr.bin/xlint/lint1/debug.c	Tue Aug  1 16:08:58 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: debug.c,v 1.58 2023/07/30 22:27:21 rillig Exp $ */
+/* $NetBSD: debug.c,v 1.59 2023/08/01 16:08:58 rillig Exp $ */
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: debug.c,v 1.58 2023/07/30 22:27:21 rillig Exp $");
+__RCSID("$NetBSD: debug.c,v 1.59 2023/08/01 16:08:58 rillig Exp $");
 #endif
 
 #include <stdlib.h>
@@ -108,6 +108,20 @@ debug_indent_dec(void)
 	debug_indentation--;
 }
 
+bool
+debug_push_indented(bool indented)
+{
+	bool prev = did_indentation;
+	did_indentation = indented;
+	return prev;
+}
+
+void
+debug_pop_indented(bool indented)
+{
+	did_indentation = indented;
+}
+
 void
 debug_step(const char *fmt, ...)
 {
@@ -426,7 +440,7 @@ static void
 debug_decl_level(const decl_level *dl)
 {
 
-	debug_printf("decl_level: %s", decl_level_kind_name(dl->d_kind));
+	debug_printf("kind=%s", decl_level_kind_name(dl->d_kind));
 	if (dl->d_scl != NOSCL)
 		debug_printf(" %s", scl_name(dl->d_scl));
 	if (dl->d_type != NULL)
@@ -477,15 +491,19 @@ debug_decl_level(const decl_level *dl)
 }
 
 void
-debug_dcs(bool all)
+debug_dcs(void)
+{
+	debug_printf("dcs ");
+	debug_decl_level(dcs);
+}
+
+void
+debug_dcs_all(void)
 {
-	int prev_indentation = debug_indentation;
+	size_t i = 0;
 	for (const decl_level *dl = dcs; dl != NULL; dl = dl->d_enclosing) {
+		debug_printf("dcs[%zu] ", i++);
 		debug_decl_level(dl);
-		if (!all)
-			return;
-		debug_indentation++;
 	}
-	debug_indentation = prev_indentation;
 }
 #endif

Index: src/usr.bin/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.370 src/usr.bin/xlint/lint1/decl.c:1.371
--- src/usr.bin/xlint/lint1/decl.c:1.370	Mon Jul 31 20:31:58 2023
+++ src/usr.bin/xlint/lint1/decl.c	Tue Aug  1 16:08:58 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.370 2023/07/31 20:31:58 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.371 2023/08/01 16:08:58 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.370 2023/07/31 20:31:58 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.371 2023/08/01 16:08:58 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -216,8 +216,8 @@ dcs_add_storage_class(scl_t sc)
 		dcs->d_scl = STATIC;	/* ignore thread_local */
 	else
 		dcs->d_multiple_storage_classes = true;
-	debug_step("%s:", __func__);
-	debug_dcs(false);
+	debug_printf("%s: ", __func__);
+	debug_dcs();
 }
 
 /* Merge the signedness into the abstract type. */
@@ -315,7 +315,7 @@ dcs_add_type(type_t *tp)
 {
 
 	debug_step("%s: %s", __func__, type_name(tp));
-	debug_dcs(false);
+	debug_dcs();
 	if (tp->t_typedef) {
 		/*
 		 * something like "typedef int a; int a b;"
@@ -344,7 +344,7 @@ dcs_add_type(type_t *tp)
 			dcs->d_rank_mod = NO_TSPEC;
 		}
 		dcs->d_type = tp;
-		debug_dcs(false);
+		debug_dcs();
 		return;
 	}
 
@@ -412,7 +412,7 @@ dcs_add_type(type_t *tp)
 			dcs->d_invalid_type_combination = true;
 		dcs->d_abstract_type = t;
 	}
-	debug_dcs(false);
+	debug_dcs();
 }
 
 static void
@@ -470,7 +470,7 @@ pack_struct_or_union(type_t *tp)
 			bits = mem_bits;
 	}
 	tp->t_sou->sou_size_in_bits = bits;
-	debug_dcs(false);
+	debug_dcs();
 }
 
 void
@@ -509,14 +509,14 @@ begin_declaration_level(decl_level_kind 
 	dl->d_last_dlsym = &dl->d_first_dlsym;
 	dcs = dl;
 	debug_enter();
-	debug_dcs(true);
+	debug_dcs_all();
 }
 
 void
 end_declaration_level(void)
 {
 
-	debug_dcs(true);
+	debug_dcs_all();
 
 	decl_level *dl = dcs;
 	dcs = dl->d_enclosing;
@@ -657,8 +657,6 @@ dcs_merge_declaration_specifiers(void)
 		return;
 	}
 
-	debug_step("%s: %s", __func__, type_name(tp));
-
 	if (t == NO_TSPEC && s == NO_TSPEC && l == NO_TSPEC && c == NO_TSPEC)
 		dcs->d_no_type_specifier = true;
 	if (t == NO_TSPEC && s == NO_TSPEC && (l == NO_TSPEC || l == LONG))
@@ -699,7 +697,8 @@ dcs_merge_declaration_specifiers(void)
 	if (l != NO_TSPEC)
 		t = l;
 	dcs->d_type = gettyp(merge_signedness(t, s));
-	debug_dcs(false);
+	debug_printf("%s: ", __func__);
+	debug_dcs();
 }
 
 /* Create a type in 'dcs->d_type' from the information gathered in 'dcs'. */
@@ -739,7 +738,7 @@ dcs_end_type(void)
 		dcs->d_type->t_volatile |= dcs->d_qual.tq_volatile;
 	}
 
-	debug_dcs(false);
+	debug_dcs();
 	debug_leave();
 }
 
@@ -1050,7 +1049,7 @@ dcs_add_member(sym_t *mem)
 	if (union_size > dcs->d_sou_size_in_bits)
 		dcs->d_sou_size_in_bits = union_size;
 
-	debug_dcs(false);
+	debug_dcs();
 }
 
 sym_t *
@@ -1195,7 +1194,7 @@ sym_t *
 add_pointer(sym_t *decl, qual_ptr *p)
 {
 
-	debug_dcs(false);
+	debug_dcs();
 
 	type_t **tpp = &decl->s_type;
 	while (*tpp != NULL && *tpp != dcs->d_type)
@@ -1266,7 +1265,7 @@ sym_t *
 add_array(sym_t *decl, bool dim, int n)
 {
 
-	debug_dcs(false);
+	debug_dcs();
 
 	type_t **tpp = &decl->s_type;
 	while (*tpp != NULL && *tpp != dcs->d_type)
@@ -1349,7 +1348,7 @@ add_function(sym_t *decl, struct paramet
 {
 
 	debug_enter();
-	debug_dcs(true);
+	debug_dcs_all();
 	debug_sym("decl: ", decl, "\n");
 #ifdef DEBUG
 	for (const sym_t *arg = params.first; arg != NULL; arg = arg->s_next)
@@ -1407,7 +1406,7 @@ add_function(sym_t *decl, struct paramet
 	    params.prototype, params.first, params.vararg);
 
 	debug_step("add_function: '%s'", type_name(decl->s_type));
-	debug_dcs(true);
+	debug_dcs_all();
 	debug_leave();
 	return decl;
 }

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.203 src/usr.bin/xlint/lint1/externs1.h:1.204
--- src/usr.bin/xlint/lint1/externs1.h:1.203	Sun Jul 30 22:27:21 2023
+++ src/usr.bin/xlint/lint1/externs1.h	Tue Aug  1 16:08:58 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.203 2023/07/30 22:27:21 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.204 2023/08/01 16:08:58 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -136,7 +136,8 @@ const char *scl_name(scl_t);
 const char *symt_name(symt_t);
 const char *type_qualifiers_string(type_qualifiers);
 const char *function_specifier_name(function_specifier);
-void	debug_dcs(bool);
+void	debug_dcs(void);
+void	debug_dcs_all(void);
 void	debug_node(const tnode_t *);
 void	debug_type(const type_t *);
 void	debug_sym(const char *, const sym_t *, const char *);
@@ -145,6 +146,8 @@ void	debug_printf(const char *fmt, ...) 
 void	debug_skip_indent(void);
 void	debug_indent_inc(void);
 void	debug_indent_dec(void);
+bool	debug_push_indented(bool);
+void	debug_pop_indented(bool);
 void	debug_enter_func(const char *);
 void	debug_step(const char *fmt, ...) __printflike(1, 2);
 void	debug_leave_func(const char *);
@@ -152,7 +155,8 @@ void	debug_leave_func(const char *);
 #define	debug_leave()		debug_leave_func(__func__)
 #else
 #define	debug_noop()		do { } while (false)
-#define	debug_dcs(all)		debug_noop()
+#define	debug_dcs()		debug_noop()
+#define	debug_dcs_all()		debug_noop()
 #define	debug_sym(p, sym, s)	debug_noop()
 #define	debug_symtab()		debug_noop()
 #define	debug_node(tn)		debug_noop()
@@ -161,6 +165,8 @@ void	debug_leave_func(const char *);
 #define	debug_skip_indent()	debug_noop()
 #define	debug_indent_inc()	debug_noop()
 #define	debug_indent_dec()	debug_noop()
+#define debug_push_indented(c)	true
+#define debug_pop_indented(c)	(void)(c)
 #define	debug_enter()		debug_noop()
 #define	debug_step(...)		debug_noop()
 #define	debug_leave()		debug_noop()

Index: src/usr.bin/xlint/lint1/lex.c
diff -u src/usr.bin/xlint/lint1/lex.c:1.189 src/usr.bin/xlint/lint1/lex.c:1.190
--- src/usr.bin/xlint/lint1/lex.c:1.189	Sun Jul 30 22:27:21 2023
+++ src/usr.bin/xlint/lint1/lex.c	Tue Aug  1 16:08:58 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lex.c,v 1.189 2023/07/30 22:27:21 rillig Exp $ */
+/* $NetBSD: lex.c,v 1.190 2023/08/01 16:08:58 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: lex.c,v 1.189 2023/07/30 22:27:21 rillig Exp $");
+__RCSID("$NetBSD: lex.c,v 1.190 2023/08/01 16:08:58 rillig Exp $");
 #endif
 
 #include <ctype.h>
@@ -1361,6 +1361,8 @@ getsym(sbuf_t *sb)
 	set_symtyp(FVFT);
 
 	if (!in_gcc_attribute) {
+		debug_printf("%s: symtab_add ", __func__);
+		debug_sym("", sym, "\n");
 		symtab_add(sym);
 
 		*dl->d_last_dlsym = sym;

Reply via email to