Module Name: src Committed By: rillig Date: Wed Mar 17 15:37:42 UTC 2021
Modified Files: src/usr.bin/xlint/lint1: init.c Log Message: lint: move debug logging for the designator to the top of the code The debugging code is needed by the soon-to-be-added proper handling of array subscript initializers such as '.member[123].member = 12345'. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 src/usr.bin/xlint/lint1/init.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/init.c diff -u src/usr.bin/xlint/lint1/init.c:1.89 src/usr.bin/xlint/lint1/init.c:1.90 --- src/usr.bin/xlint/lint1/init.c:1.89 Mon Feb 22 15:09:50 2021 +++ src/usr.bin/xlint/lint1/init.c Wed Mar 17 15:37:42 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: init.c,v 1.89 2021/02/22 15:09:50 rillig Exp $ */ +/* $NetBSD: init.c,v 1.90 2021/03/17 15:37:42 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: init.c,v 1.89 2021/02/22 15:09:50 rillig Exp $"); +__RCSID("$NetBSD: init.c,v 1.90 2021/03/17 15:37:42 rillig Exp $"); #endif #include <stdlib.h> @@ -146,12 +146,18 @@ namlist_t *namedmem = NULL; static bool init_array_using_string(tnode_t *); #ifndef DEBUG + #define debug_printf(fmt, ...) do { } while (false) #define debug_indent() do { } while (false) #define debug_enter(a) do { } while (false) #define debug_step(fmt, ...) do { } while (false) #define debug_leave(a) do { } while (false) +#define debug_named_member() do { } while (false) +#define debug_initstack_element(elem) do { } while (false) +#define debug_initstack() do { } while (false) + #else + static int debug_ind = 0; static void __printflike(1, 2) @@ -194,52 +200,6 @@ debug_leave(const char *func) printf("%*s- %s\n", 2 * --debug_ind, "", func); } -#define debug_enter() debug_enter(__func__) -#define debug_leave() debug_leave(__func__) - -#endif - -void -push_member(sbuf_t *sb) -{ - namlist_t *nam = xcalloc(1, sizeof (namlist_t)); - nam->n_name = sb->sb_name; - - debug_step("%s: '%s' %p", __func__, nam->n_name, nam); - - if (namedmem == NULL) { - /* - * XXX: Why is this a circular list? - * XXX: Why is this a doubly-linked list? - * A simple stack should suffice. - */ - nam->n_prev = nam->n_next = nam; - namedmem = nam; - } else { - namedmem->n_prev->n_next = nam; - nam->n_prev = namedmem->n_prev; - nam->n_next = namedmem; - namedmem->n_prev = nam; - } -} - -static void -pop_member(void) -{ - debug_step("%s: %s %p", __func__, namedmem->n_name, namedmem); - if (namedmem->n_next == namedmem) { - free(namedmem); - namedmem = NULL; - } else { - namlist_t *nam = namedmem; - namedmem = namedmem->n_next; - nam->n_prev->n_next = nam->n_next; - nam->n_next->n_prev = nam->n_prev; - free(nam); - } -} - -#ifdef DEBUG static void debug_named_member(void) { @@ -256,11 +216,7 @@ debug_named_member(void) } while (name != namedmem); debug_printf("\n"); } -#else -#define debug_named_member() do { } while (false) -#endif -#ifdef DEBUG static void debug_initstack_element(const initstack_element *elem) { @@ -301,11 +257,52 @@ debug_initstack(void) i++; } } -#else -#define debug_initstack_element(elem) do { } while (false) -#define debug_initstack() do { } while (false) + +#define debug_enter() debug_enter(__func__) +#define debug_leave() debug_leave(__func__) + #endif +void +push_member(sbuf_t *sb) +{ + namlist_t *nam = xcalloc(1, sizeof (namlist_t)); + nam->n_name = sb->sb_name; + + debug_step("%s: '%s' %p", __func__, nam->n_name, nam); + + if (namedmem == NULL) { + /* + * XXX: Why is this a circular list? + * XXX: Why is this a doubly-linked list? + * A simple stack should suffice. + */ + nam->n_prev = nam->n_next = nam; + namedmem = nam; + } else { + namedmem->n_prev->n_next = nam; + nam->n_prev = namedmem->n_prev; + nam->n_next = namedmem; + namedmem->n_prev = nam; + } +} + +static void +pop_member(void) +{ + debug_step("%s: %s %p", __func__, namedmem->n_name, namedmem); + if (namedmem->n_next == namedmem) { + free(namedmem); + namedmem = NULL; + } else { + namlist_t *nam = namedmem; + namedmem = namedmem->n_next; + nam->n_prev->n_next = nam->n_next; + nam->n_next->n_prev = nam->n_prev; + free(nam); + } +} + /* * Initialize the initialization stack by putting an entry for the object * which is to be initialized on it.