Module Name: src
Committed By: rillig
Date: Wed Jul 14 17:07:24 UTC 2021
Modified Files:
src/usr.bin/xlint/lint1: cgram.y externs1.h tree.c
Log Message:
lint: extract build_member_access from the grammar
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.322 -r1.323 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.116 -r1.117 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.313 -r1.314 src/usr.bin/xlint/lint1/tree.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.322 src/usr.bin/xlint/lint1/cgram.y:1.323
--- src/usr.bin/xlint/lint1/cgram.y:1.322 Wed Jul 14 16:59:39 2021
+++ src/usr.bin/xlint/lint1/cgram.y Wed Jul 14 17:07:24 2021
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.322 2021/07/14 16:59:39 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.323 2021/07/14 17:07:24 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.322 2021/07/14 16:59:39 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.323 2021/07/14 17:07:24 rillig Exp $");
#endif
#include <limits.h>
@@ -478,24 +478,7 @@ postfix_expression:
$$ = new_function_call_node($1, $3);
}
| postfix_expression point_or_arrow T_NAME {
- if ($1 != NULL) {
- sym_t *msym;
- /*
- * XXX struct_or_union_member should be integrated
- * in build()
- */
- if ($2 == ARROW) {
- /*
- * must do this before struct_or_union_member
- * is called
- */
- $1 = cconv($1);
- }
- msym = struct_or_union_member($1, $2, getsym($3));
- $$ = build($2, $1, new_name_node(msym, 0));
- } else {
- $$ = NULL;
- }
+ $$ = build_member_access($1, $2, $3);
}
| postfix_expression T_INCDEC {
$$ = build($2 == INC ? INCAFT : DECAFT, $1, NULL);
Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.116 src/usr.bin/xlint/lint1/externs1.h:1.117
--- src/usr.bin/xlint/lint1/externs1.h:1.116 Sat Jul 10 17:35:54 2021
+++ src/usr.bin/xlint/lint1/externs1.h Wed Jul 14 17:07:24 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: externs1.h,v 1.116 2021/07/10 17:35:54 rillig Exp $ */
+/* $NetBSD: externs1.h,v 1.117 2021/07/14 17:07:24 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -212,6 +212,7 @@ extern tnode_t *build_generic_selection(
struct generic_association *);
extern tnode_t *build(op_t, tnode_t *, tnode_t *);
+extern tnode_t *build_member_access(tnode_t *, op_t, sbuf_t *);
extern tnode_t *cconv(tnode_t *);
extern bool is_typeok_bool_operand(const tnode_t *);
extern bool typeok(op_t, int, const tnode_t *, const tnode_t *);
Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.313 src/usr.bin/xlint/lint1/tree.c:1.314
--- src/usr.bin/xlint/lint1/tree.c:1.313 Tue Jul 6 04:44:20 2021
+++ src/usr.bin/xlint/lint1/tree.c Wed Jul 14 17:07:24 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.313 2021/07/06 04:44:20 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.314 2021/07/14 17:07:24 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: tree.c,v 1.313 2021/07/06 04:44:20 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.314 2021/07/14 17:07:24 rillig Exp $");
#endif
#include <float.h>
@@ -687,6 +687,22 @@ build(op_t op, tnode_t *ln, tnode_t *rn)
return ntn;
}
+tnode_t *
+build_member_access(tnode_t *ln, op_t op, sbuf_t *member)
+{
+ sym_t *msym;
+
+ if (ln == NULL)
+ return NULL;
+
+ if (op == ARROW) {
+ /* must do this before struct_or_union_member is called */
+ ln = cconv(ln);
+ }
+ msym = struct_or_union_member(ln, op, getsym(member));
+ return build(op, ln, new_name_node(msym, 0));
+}
+
/*
* Perform class conversions.
*