Module Name:    src
Committed By:   rillig
Date:           Sat Mar 27 23:18:38 UTC 2021

Modified Files:
        src/usr.bin/xlint/lint1: init.c

Log Message:
lint: extract brace_level_next_member from initstack_pop_item_unnamed

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.143 -r1.144 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.143 src/usr.bin/xlint/lint1/init.c:1.144
--- src/usr.bin/xlint/lint1/init.c:1.143	Sat Mar 27 22:53:10 2021
+++ src/usr.bin/xlint/lint1/init.c	Sat Mar 27 23:18:37 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: init.c,v 1.143 2021/03/27 22:53:10 rillig Exp $	*/
+/*	$NetBSD: init.c,v 1.144 2021/03/27 23:18:37 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.143 2021/03/27 22:53:10 rillig Exp $");
+__RCSID("$NetBSD: init.c,v 1.144 2021/03/27 23:18:37 rillig Exp $");
 #endif
 
 #include <stdlib.h>
@@ -559,6 +559,21 @@ brace_level_set_array_dimension(int dim)
 	debug_brace_level(brace_level_rvalue);
 }
 
+static void
+brace_level_next_member(struct brace_level *level)
+{
+	const sym_t *m;
+
+	do {
+		m = level->bl_next_member = level->bl_next_member->s_next;
+		/* XXX: can this assertion be made to fail? */
+		lint_assert(m != NULL);
+	} while (m->s_bitfield && m->s_name == unnamed);
+
+	debug_indent();
+	debug_brace_level(level);
+}
+
 /*
  * A sub-object of an array is initialized using a designator.  This does not
  * have to be an array element directly, it can also be used to initialize
@@ -695,7 +710,6 @@ static void
 initstack_pop_item_unnamed(void)
 {
 	struct brace_level *level = brace_level_lvalue;
-	sym_t *m;
 
 	/*
 	 * If the removed element was a structure member, we must go
@@ -703,15 +717,8 @@ initstack_pop_item_unnamed(void)
 	 */
 	if (level->bl_remaining > 0 && level->bl_type->t_tspec == STRUCT &&
 	    !level->bl_seen_named_member) {
-		do {
-			m = level->bl_next_member =
-			    level->bl_next_member->s_next;
-			/* XXX: can this assertion be made to fail? */
-			lint_assert(m != NULL);
-			debug_step("pop %s", m->s_name);
-		} while (m->s_bitfield && m->s_name == unnamed);
-		/* XXX: duplicate code for skipping unnamed bit-fields */
-		level->bl_subtype = m->s_type;
+		brace_level_next_member(level);
+		level->bl_subtype = level->bl_next_member->s_type;
 	}
 }
 

Reply via email to