Skip to content

Conversation

@Sirraide
Copy link
Member

As requested by @shafik in #129737 (comment). I also added a test for thread_local because why not.

@Sirraide Sirraide added the clang:frontend Language frontend issues, e.g. anything involving "Sema" label Mar 13, 2025
@Sirraide Sirraide requested review from AaronBallman and shafik March 13, 2025 19:48
@llvmbot llvmbot added the clang Clang issues not falling into any other category label Mar 13, 2025
@llvmbot
Copy link
Member

llvmbot commented Mar 13, 2025

@llvm/pr-subscribers-clang

Author: None (Sirraide)

Changes

As requested by @shafik in #129737 (comment). I also added a test for thread_local because why not.


Full diff: https://github.com/llvm/llvm-project/pull/131199.diff

1 Files Affected:

  • (modified) clang/test/Sema/for.c (+9-7)
diff --git a/clang/test/Sema/for.c b/clang/test/Sema/for.c
index c21ef62247037..110f84ddda952 100644
--- a/clang/test/Sema/for.c
+++ b/clang/test/Sema/for.c
@@ -5,17 +5,19 @@
 void b1 (void) { for (void (*f) (void);;); }
 void b2 (void) { for (void f (void);;); }   /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}}
                                                c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */
-void b3 (void) { for (static int f;;); }    /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}}
-                                               c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */
+void b3 (void) { for (static int f;f;); }    /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}}
+                                                c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */
 
 void b4 (void) { for (typedef int f;;); }   /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}}
                                                c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */
-void b5 (void) { for (struct { int i; } s;;); }
-void b6 (void) { for (enum { zero, ten = 10 } i;;); }
+void b5 (void) { for (struct { int i; } s;s.i;); }
+void b6 (void) { for (enum { zero, ten = 10 } i = ten;i;); }
 void b7 (void) { for (struct s { int i; };;); } /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}}
                                                    c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */
-void b8 (void) { for (static struct { int i; } s;;); } /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}}
-                                                          c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */
-void b9 (void) { for (struct { int i; } (*s)(struct { int j; } o) = 0;;); }
+void b8 (void) { for (static struct { int i; } s;s.i;); } /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}}
+                                                             c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */
+void b9 (void) { for (struct { int i; } (*s)(struct { int j; } o) = 0;s;); }
 void b10(void) { for (typedef struct { int i; } (*s)(struct { int j; });;); } /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}}
                                                                                  c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */
+void b11 (void) { for (static _Thread_local struct { int i; } s;s.i;); } /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}}
+                                                                            c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */

@Sirraide Sirraide merged commit 20b7f59 into llvm:main Mar 14, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang:frontend Language frontend issues, e.g. anything involving "Sema" clang Clang issues not falling into any other category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants