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: extract check_non_constant_initial...



details:   https://anonhg.NetBSD.org/src/rev/84a008eff63f
branches:  trunk
changeset: 959673:84a008eff63f
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Feb 21 15:02:16 2021 +0000

description:
lint: extract check_non_constant_initializer from init_using_expr

No functional change.

diffstat:

 usr.bin/xlint/lint1/externs1.h |   4 ++--
 usr.bin/xlint/lint1/init.c     |  38 +++++++++++++++++++++++---------------
 usr.bin/xlint/lint1/tree.c     |   6 +++---
 3 files changed, 28 insertions(+), 20 deletions(-)

diffs (111 lines):

diff -r 8d831c7bfc20 -r 84a008eff63f usr.bin/xlint/lint1/externs1.h
--- a/usr.bin/xlint/lint1/externs1.h    Sun Feb 21 15:00:04 2021 +0000
+++ b/usr.bin/xlint/lint1/externs1.h    Sun Feb 21 15:02:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: externs1.h,v 1.70 2021/02/21 07:59:17 rillig Exp $     */
+/*     $NetBSD: externs1.h,v 1.71 2021/02/21 15:02:16 rillig Exp $     */
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -219,7 +219,7 @@
 extern void    expr(tnode_t *, bool, bool, bool, bool);
 extern void    check_expr_misc(const tnode_t *, bool, bool, bool,
                    bool, bool, bool);
-extern bool    constant_addr(tnode_t *, sym_t **, ptrdiff_t *);
+extern bool    constant_addr(const tnode_t *, sym_t **, ptrdiff_t *);
 extern strg_t  *cat_strings(strg_t *, strg_t *);
 extern  int64_t tsize(type_t *);
 #ifdef DEBUG
diff -r 8d831c7bfc20 -r 84a008eff63f usr.bin/xlint/lint1/init.c
--- a/usr.bin/xlint/lint1/init.c        Sun Feb 21 15:00:04 2021 +0000
+++ b/usr.bin/xlint/lint1/init.c        Sun Feb 21 15:02:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: init.c,v 1.86 2021/02/21 14:57:25 rillig Exp $ */
+/*     $NetBSD: init.c,v 1.87 2021/02/21 15:02:16 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.86 2021/02/21 14:57:25 rillig Exp $");
+__RCSID("$NetBSD: init.c,v 1.87 2021/02/21 15:02:16 rillig Exp $");
 #endif
 
 #include <stdlib.h>
@@ -742,6 +742,26 @@
        }
 }
 
+static void
+check_non_constant_initializer(const tnode_t *tn, scl_t sclass)
+{
+       if (tn == NULL || tn->tn_op == CON)
+               return;
+
+       sym_t *sym;
+       ptrdiff_t offs;
+       if (constant_addr(tn, &sym, &offs))
+               return;
+
+       if (sclass == AUTO || sclass == REG) {
+               /* non-constant initializer */
+               c99ism(177);
+       } else {
+               /* non-constant initializer */
+               error(177);
+       }
+}
+
 void
 init_using_expr(tnode_t *tn)
 {
@@ -840,19 +860,7 @@
        if (lt != rt || (initstk->i_type->t_bitfield && tn->tn_op == CON))
                tn = convert(INIT, 0, initstk->i_type, tn);
 
-       if (tn != NULL && tn->tn_op != CON) {
-               sym_t *sym;
-               ptrdiff_t offs;
-               if (!constant_addr(tn, &sym, &offs)) {
-                       if (sclass == AUTO || sclass == REG) {
-                               /* non-constant initializer */
-                               c99ism(177);
-                       } else {
-                               /* non-constant initializer */
-                               error(177);
-                       }
-               }
-       }
+       check_non_constant_initializer(tn, sclass);
 
        debug_initstack();
        debug_leave();
diff -r 8d831c7bfc20 -r 84a008eff63f usr.bin/xlint/lint1/tree.c
--- a/usr.bin/xlint/lint1/tree.c        Sun Feb 21 15:00:04 2021 +0000
+++ b/usr.bin/xlint/lint1/tree.c        Sun Feb 21 15:02:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tree.c,v 1.215 2021/02/21 11:23:33 rillig Exp $        */
+/*     $NetBSD: tree.c,v 1.216 2021/02/21 15:02:16 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.215 2021/02/21 11:23:33 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.216 2021/02/21 15:02:16 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -4185,7 +4185,7 @@
  * representation (including width).
  */
 bool
-constant_addr(tnode_t *tn, sym_t **symp, ptrdiff_t *offsp)
+constant_addr(const tnode_t *tn, sym_t **symp, ptrdiff_t *offsp)
 {
        sym_t   *sym;
        ptrdiff_t offs1, offs2;



Home | Main Index | Thread Index | Old Index