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: clean up completion of struct, uni...



details:   https://anonhg.NetBSD.org/src/rev/c8fce1460393
branches:  trunk
changeset: 376695:c8fce1460393
user:      rillig <rillig%NetBSD.org@localhost>
date:      Thu Jun 29 05:03:03 2023 +0000

description:
lint: clean up completion of struct, union and enum declarations

No functional change.

diffstat:

 usr.bin/xlint/lint1/cgram.y    |  12 ++++++------
 usr.bin/xlint/lint1/decl.c     |  29 +++++++++++------------------
 usr.bin/xlint/lint1/externs1.h |   6 +++---
 3 files changed, 20 insertions(+), 27 deletions(-)

diffs (162 lines):

diff -r ae37fff1286f -r c8fce1460393 usr.bin/xlint/lint1/cgram.y
--- a/usr.bin/xlint/lint1/cgram.y       Thu Jun 29 01:30:31 2023 +0000
+++ b/usr.bin/xlint/lint1/cgram.y       Thu Jun 29 05:03:03 2023 +0000
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.436 2023/05/22 17:47:27 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.437 2023/06/29 05:03:03 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: cgram.y,v 1.436 2023/05/22 17:47:27 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.437 2023/06/29 05:03:03 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -888,12 +888,12 @@ struct_or_union_specifier:        /* C99 6.7.2.
        | struct_or_union identifier_sym {
                dcs->d_tagtyp = make_tag_type($2, $1, true, false);
          } braced_struct_declaration_list {
-               $$ = complete_tag_struct_or_union(dcs->d_tagtyp, $4);
+               $$ = complete_struct_or_union($4);
          }
        | struct_or_union {
                dcs->d_tagtyp = make_tag_type(NULL, $1, true, false);
          } braced_struct_declaration_list {
-               $$ = complete_tag_struct_or_union(dcs->d_tagtyp, $3);
+               $$ = complete_struct_or_union($3);
          }
        | struct_or_union error {
                symtyp = FVFT;
@@ -1040,12 +1040,12 @@ enum_specifier:                 /* C99 6.7.2.2 */
        | enum gcc_attribute_specifier_list_opt identifier_sym {
                dcs->d_tagtyp = make_tag_type($3, ENUM, true, false);
          } enum_declaration /*gcc_attribute_specifier_list_opt*/ {
-               $$ = complete_tag_enum(dcs->d_tagtyp, $5);
+               $$ = complete_enum($5);
          }
        | enum gcc_attribute_specifier_list_opt {
                dcs->d_tagtyp = make_tag_type(NULL, ENUM, true, false);
          } enum_declaration /*gcc_attribute_specifier_list_opt*/ {
-               $$ = complete_tag_enum(dcs->d_tagtyp, $4);
+               $$ = complete_enum($4);
          }
        | enum error {
                symtyp = FVFT;
diff -r ae37fff1286f -r c8fce1460393 usr.bin/xlint/lint1/decl.c
--- a/usr.bin/xlint/lint1/decl.c        Thu Jun 29 01:30:31 2023 +0000
+++ b/usr.bin/xlint/lint1/decl.c        Thu Jun 29 05:03:03 2023 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.318 2023/06/24 06:55:34 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.319 2023/06/29 05:03:03 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: decl.c,v 1.318 2023/06/24 06:55:34 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.319 2023/06/29 05:03:03 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -1182,7 +1182,7 @@ declarator_1_struct_union(sym_t *dsym)
 }
 
 /*
- * Aligns next structure element as required.
+ * Aligns the next structure element as required.
  *
  * al contains the required alignment, len the length of a bit-field.
  */
@@ -1559,7 +1559,6 @@ declarator_name(sym_t *sym)
                /* Set parent */
                sym->u.s_member.sm_sou_type = dcs->d_tagtyp->t_sou;
                sym->s_def = DEF;
-               /* XXX: Where is sym->u.s_member.sm_offset_in_bits set? */
                sc = dcs->d_kind == DK_STRUCT_MEMBER
                    ? STRUCT_MEMBER
                    : UNION_MEMBER;
@@ -1808,27 +1807,20 @@ storage_class_name(scl_t sc)
        /* NOTREACHED */
 }
 
-/*
- * tp points to the type of the tag, fmem to the list of members.
- */
 type_t *
-complete_tag_struct_or_union(type_t *tp, sym_t *fmem)
+complete_struct_or_union(sym_t *first_member)
 {
 
+       type_t *tp = dcs->d_tagtyp;
        if (tp == NULL)         /* in case of syntax errors */
                return gettyp(INT);
 
-       if (tp->t_tspec == ENUM)
-               tp->t_enum->en_incomplete = false;
-       else
-               tp->t_sou->sou_incomplete = false;
-
-       tspec_t t = tp->t_tspec;
        dcs_align((u_int)dcs->d_sou_align_in_bits, 0);
 
        struct_or_union *sp = tp->t_sou;
        sp->sou_align_in_bits = dcs->d_sou_align_in_bits;
-       sp->sou_first_member = fmem;
+       sp->sou_incomplete = false;
+       sp->sou_first_member = first_member;
        if (tp->t_packed)
                set_packed_size(tp);
        else
@@ -1836,11 +1828,11 @@ complete_tag_struct_or_union(type_t *tp,
 
        if (sp->sou_size_in_bits == 0) {
                /* zero sized %s is a C99 feature */
-               c99ism(47, ttab[t].tt_name);
+               c99ism(47, tspec_name(tp->t_tspec));
        }
 
        int n = 0;
-       for (sym_t *mem = fmem; mem != NULL; mem = mem->s_next) {
+       for (sym_t *mem = first_member; mem != NULL; mem = mem->s_next) {
                /* bind anonymous members to the structure */
                if (mem->u.s_member.sm_sou_type == NULL) {
                        mem->u.s_member.sm_sou_type = sp;
@@ -1864,9 +1856,10 @@ complete_tag_struct_or_union(type_t *tp,
 }
 
 type_t *
-complete_tag_enum(type_t *tp, sym_t *first_enumerator)
+complete_enum(sym_t *first_enumerator)
 {
 
+       type_t *tp = dcs->d_tagtyp;
        tp->t_enum->en_incomplete = false;
        tp->t_enum->en_first_enumerator = first_enumerator;
        return tp;
diff -r ae37fff1286f -r c8fce1460393 usr.bin/xlint/lint1/externs1.h
--- a/usr.bin/xlint/lint1/externs1.h    Thu Jun 29 01:30:31 2023 +0000
+++ b/usr.bin/xlint/lint1/externs1.h    Thu Jun 29 05:03:03 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: externs1.h,v 1.178 2023/06/24 07:15:08 rillig Exp $    */
+/*     $NetBSD: externs1.h,v 1.179 2023/06/29 05:03:03 rillig Exp $    */
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -214,8 +214,8 @@ sym_t       *declarator_name(sym_t *);
 sym_t  *old_style_function_name(sym_t *);
 type_t *make_tag_type(sym_t *, tspec_t, bool, bool);
 const  char *storage_class_name(scl_t);
-type_t *complete_tag_struct_or_union(type_t *, sym_t *);
-type_t *complete_tag_enum(type_t *, sym_t *);
+type_t *complete_struct_or_union(sym_t *);
+type_t *complete_enum(sym_t *);
 sym_t  *enumeration_constant(sym_t *, int, bool);
 void   declare(sym_t *, bool, sbuf_t *);
 void   copy_usage_info(sym_t *, sym_t *);



Home | Main Index | Thread Index | Old Index