Module Name:    src
Committed By:   rillig
Date:           Tue Jul 25 16:56:35 UTC 2023

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

Log Message:
lint: allow 'thread_local' to be combined with 'static'


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/c23.c
cvs rdiff -u -r1.361 -r1.362 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/c23.c
diff -u src/tests/usr.bin/xlint/lint1/c23.c:1.5 src/tests/usr.bin/xlint/lint1/c23.c:1.6
--- src/tests/usr.bin/xlint/lint1/c23.c:1.5	Sat Jul 15 16:17:38 2023
+++ src/tests/usr.bin/xlint/lint1/c23.c	Tue Jul 25 16:56:35 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: c23.c,v 1.5 2023/07/15 16:17:38 rillig Exp $	*/
+/*	$NetBSD: c23.c,v 1.6 2023/07/25 16:56:35 rillig Exp $	*/
 # 3 "c23.c"
 
 // Tests for the option -Ac23, which allows features from C23 and all earlier
@@ -40,7 +40,11 @@ function(void)
 	thread_local int function_scoped_thread_local;
 }
 
-// 'extern' and 'thread_local' can be combined.  The other storage classes
-// cannot be combined.
+// 'thread_local' can be combined with 'extern' and 'static', but with no other
+// storage classes.  The other storage classes cannot be combined.
 extern thread_local int extern_thread_local_1;
 thread_local extern int extern_thread_local_2;
+static thread_local int static_thread_local_1;
+thread_local static int static_thread_local_2;
+/* expect-2: warning: static variable 'static_thread_local_1' unused [226] */
+/* expect-2: warning: static variable 'static_thread_local_2' unused [226] */

Index: src/usr.bin/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.361 src/usr.bin/xlint/lint1/decl.c:1.362
--- src/usr.bin/xlint/lint1/decl.c:1.361	Tue Jul 18 03:00:42 2023
+++ src/usr.bin/xlint/lint1/decl.c	Tue Jul 25 16:56:35 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.361 2023/07/18 03:00:42 rin Exp $ */
+/* $NetBSD: decl.c,v 1.362 2023/07/25 16:56:35 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.361 2023/07/18 03:00:42 rin Exp $");
+__RCSID("$NetBSD: decl.c,v 1.362 2023/07/25 16:56:35 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -226,6 +226,9 @@ dcs_add_storage_class(scl_t sc)
 	else if ((dcs->d_scl == EXTERN && sc == THREAD_LOCAL)
 	    || (dcs->d_scl == THREAD_LOCAL && sc == EXTERN))
 		dcs->d_scl = EXTERN;	/* ignore thread_local */
+	else if ((dcs->d_scl == STATIC && sc == THREAD_LOCAL)
+	    || (dcs->d_scl == THREAD_LOCAL && sc == STATIC))
+		dcs->d_scl = STATIC;	/* ignore thread_local */
 	else
 		dcs->d_multiple_storage_classes = true;
 }

Reply via email to