Module Name:    src
Committed By:   rillig
Date:           Wed Aug  2 05:44:27 UTC 2023

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

Log Message:
lint: simplify handling of old-style arguments


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/tests/usr.bin/xlint/lint1/decl_arg.c
cvs rdiff -u -r1.372 -r1.373 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/tests/usr.bin/xlint/lint1/decl_arg.c
diff -u src/tests/usr.bin/xlint/lint1/decl_arg.c:1.10 src/tests/usr.bin/xlint/lint1/decl_arg.c:1.11
--- src/tests/usr.bin/xlint/lint1/decl_arg.c:1.10	Sun Jul  9 11:18:55 2023
+++ src/tests/usr.bin/xlint/lint1/decl_arg.c	Wed Aug  2 05:44:27 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: decl_arg.c,v 1.10 2023/07/09 11:18:55 rillig Exp $	*/
+/*	$NetBSD: decl_arg.c,v 1.11 2023/08/02 05:44:27 rillig Exp $	*/
 # 3 "decl_arg.c"
 
 /*
@@ -133,5 +133,23 @@ void cover_asm_or_symbolrename_asm(void)
 void cover_asm_or_symbolrename_symbolrename(void)
     __symbolrename(alternate_name);
 
+
+double
+f(e, s, r, a, t, n)
+	/* expect+1: error: only 'register' is valid as storage class in parameter [9] */
+	extern double e;
+	/* expect+1: error: only 'register' is valid as storage class in parameter [9] */
+	static double s;
+	register double r;
+	/* expect+1: error: only 'register' is valid as storage class in parameter [9] */
+	auto double a;
+	/* expect+1: error: only 'register' is valid as storage class in parameter [9] */
+	typedef double t;
+	double n;
+{
+	return e + s + r + a + t + n;
+}
+
+
 // FIXME: internal error in decl.c:906 near decl_arg.c:134: length(0)
 //void cover_abstract_declarator_typeof(void (*)(typeof(no_args)));

Index: src/usr.bin/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.372 src/usr.bin/xlint/lint1/decl.c:1.373
--- src/usr.bin/xlint/lint1/decl.c:1.372	Tue Aug  1 19:57:38 2023
+++ src/usr.bin/xlint/lint1/decl.c	Wed Aug  2 05:44:27 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.372 2023/08/01 19:57:38 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.373 2023/08/02 05:44:27 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.372 2023/08/01 19:57:38 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.373 2023/08/02 05:44:27 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -1482,14 +1482,10 @@ declarator_name(sym_t *sym)
 	case DLK_PROTO_PARAMS:
 		sym->s_arg = true;
 		/* FALLTHROUGH */
-	case DLK_OLD_STYLE_ARGS:
-		if ((sc = dcs->d_scl) == NOSCL)
-			sc = AUTO;
-		else {
-			lint_assert(sc == REG);
-			sym->s_register = true;
-			sc = AUTO;
-		}
+	case DLK_OLD_STYLE_ARGS:;
+		lint_assert(dcs->d_scl == NOSCL || dcs->d_scl == REG);
+		sym->s_register = dcs->d_scl == REG;
+		sc = AUTO;
 		sym->s_def = DEF;
 		break;
 	case DLK_AUTO:

Reply via email to