Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/xlint/lint1 lint: split complicated function for loo...
details: https://anonhg.NetBSD.org/src/rev/98b002efb2ea
branches: trunk
changeset: 960781:98b002efb2ea
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Mar 28 19:30:08 2021 +0000
description:
lint: split complicated function for looking up struct members
No functional change.
diffstat:
usr.bin/xlint/lint1/init.c | 55 ++++++++++++++++++++++-----------------------
1 files changed, 27 insertions(+), 28 deletions(-)
diffs (98 lines):
diff -r 5a8482858012 -r 98b002efb2ea usr.bin/xlint/lint1/init.c
--- a/usr.bin/xlint/lint1/init.c Sun Mar 28 18:48:32 2021 +0000
+++ b/usr.bin/xlint/lint1/init.c Sun Mar 28 19:30:08 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: init.c,v 1.171 2021/03/28 18:33:27 rillig Exp $ */
+/* $NetBSD: init.c,v 1.172 2021/03/28 19:30:08 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.171 2021/03/28 18:33:27 rillig Exp $");
+__RCSID("$NetBSD: init.c,v 1.172 2021/03/28 19:30:08 rillig Exp $");
#endif
#include <stdlib.h>
@@ -589,8 +589,8 @@
/* TODO: merge duplicate code */
static sym_t *
-brace_level_look_up_member_bloated(struct brace_level *level,
- const struct designator *dr, int *count)
+brace_level_look_up_member_named(struct brace_level *level, const char *name,
+ int *count)
{
sym_t *m;
@@ -598,25 +598,25 @@
m != NULL; m = m->s_next) {
if (m->s_bitfield && m->s_name == unnamed)
continue;
- /*
- * TODO: split into separate functions:
- *
- * look_up_array_next
- * look_up_array_designator
- * look_up_struct_next
- * look_up_struct_designator
- */
- if (dr != NULL) {
- /* XXX: this log entry looks unnecessarily verbose */
- debug_step("have member '%s', want member '%s'",
- m->s_name, dr->name);
- if (strcmp(m->s_name, dr->name) == 0) {
- (*count)++;
- break;
- } else
- continue;
- }
+ if (strcmp(m->s_name, name) != 0)
+ continue;
+ (*count)++;
+ break;
+ }
+
+ return m;
+}
+/* TODO: merge duplicate code */
+static sym_t *
+brace_level_look_up_member_unnamed(struct brace_level *level, int *count)
+{
+ sym_t *m;
+
+ for (m = level->bl_type->t_str->sou_first_member;
+ m != NULL; m = m->s_next) {
+ if (m->s_bitfield && m->s_name == unnamed)
+ continue;
/* XXX: What is this code for? */
if (++(*count) == 1) {
level->bl_next_member = m;
@@ -812,10 +812,6 @@
static bool
initialization_push_struct_or_union(struct initialization *in)
{
- /*
- * TODO: remove unnecessary 'const' for variables in functions that
- * fit on a single screen. Keep it for larger functions.
- */
struct brace_level *level = in->brace_level;
int cnt;
sym_t *m;
@@ -833,8 +829,11 @@
type_name(level->bl_type),
level->bl_seen_named_member ? ", seen named member" : "");
- m = brace_level_look_up_member_bloated(level,
- in->designation.head, &cnt);
+ if (in->designation.head != NULL)
+ m = brace_level_look_up_member_named(level,
+ in->designation.head->name, &cnt);
+ else
+ m = brace_level_look_up_member_unnamed(level, &cnt);
if (in->designation.head != NULL) {
if (m == NULL) {
Home |
Main Index |
Thread Index |
Old Index