Author: Sirraide Date: 2025-03-14T14:09:26+01:00 New Revision: 20b7f5982622f1314129fbb9f3c520e789c69bb8
URL: https://github.com/llvm/llvm-project/commit/20b7f5982622f1314129fbb9f3c520e789c69bb8 DIFF: https://github.com/llvm/llvm-project/commit/20b7f5982622f1314129fbb9f3c520e789c69bb8.diff LOG: [Clang] [Tests] Add some more tests around non-local/non-variable declarations in C for loops (#131199) 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. Added: Modified: clang/test/Sema/for.c Removed: ################################################################################ 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}} */ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits