Module Name:    src
Committed By:   rillig
Date:           Sat Mar 27 22:13:55 UTC 2021

Modified Files:
        src/usr.bin/xlint/lint1: decl.c

Log Message:
lint: move handling of function renaming over to declare_extern

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.165 -r1.166 src/usr.bin/xlint/lint1/decl.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/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.165 src/usr.bin/xlint/lint1/decl.c:1.166
--- src/usr.bin/xlint/lint1/decl.c:1.165	Sat Mar 27 22:04:39 2021
+++ src/usr.bin/xlint/lint1/decl.c	Sat Mar 27 22:13:55 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.165 2021/03/27 22:04:39 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.166 2021/03/27 22:13:55 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: decl.c,v 1.165 2021/03/27 22:04:39 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.166 2021/03/27 22:13:55 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -1895,10 +1895,19 @@ enumeration_constant(sym_t *sym, int val
  * Process a single external declarator.
  */
 static void
-declare_extern(sym_t *dsym, bool initflg)
+declare_extern(sym_t *dsym, bool initflg, sbuf_t *renaming)
 {
 	bool	dowarn, rval, redec;
 	sym_t	*rdsym;
+	char	*s;
+
+	if (renaming != NULL) {
+		lint_assert(dsym->s_rename == NULL);
+
+		s = getlblk(1, renaming->sb_len + 1);
+		(void)memcpy(s, renaming->sb_name, renaming->sb_len + 1);
+		dsym->s_rename = s;
+	}
 
 	check_function_definition(dsym, true);
 
@@ -2017,36 +2026,22 @@ declare_extern(sym_t *dsym, bool initflg
 void
 declare(sym_t *decl, bool initflg, sbuf_t *renaming)
 {
-	char *s;
-
-	switch (dcs->d_ctx) {
-	case EXTERN:
-		if (renaming != NULL) {
-			lint_assert(decl->s_rename == NULL);
 
-			s = getlblk(1, renaming->sb_len + 1);
-			(void)memcpy(s, renaming->sb_name, renaming->sb_len + 1);
-			decl->s_rename = s;
-		}
-		declare_extern(decl, initflg);
-		break;
-	case ARG:
+	if (dcs->d_ctx == EXTERN) {
+		declare_extern(decl, initflg, renaming);
+	} else if (dcs->d_ctx == ARG) {
 		if (renaming != NULL) {
 			/* symbol renaming can't be used on function arguments */
 			error(310);
-			break;
-		}
-		(void)declare_argument(decl, initflg);
-		break;
-	default:
+		} else
+			(void)declare_argument(decl, initflg);
+	} else {
 		lint_assert(dcs->d_ctx == AUTO);
 		if (renaming != NULL) {
 			/* symbol renaming can't be used on automatic variables */
 			error(311);
-			break;
-		}
-		declare_local(decl, initflg);
-		break;
+		} else
+			declare_local(decl, initflg);
 	}
 
 	if (initflg && !*current_initerr())

Reply via email to