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. *