[clang] [Clang] [Tests] Add some more tests around non-local/non-variable declarations in C for loops (PR #131199)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 13 12:48:53 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: None (Sirraide)
<details>
<summary>Changes</summary>
As requested by @<!-- -->shafik in https://github.com/llvm/llvm-project/pull/129737#discussion_r1984337334. 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
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}} */
``````````
</details>
https://github.com/llvm/llvm-project/pull/131199
More information about the cfe-commits
mailing list