[clang] [Clang][Sema]: Allow flexible arrays in unions and alone in structs (PR #84428)

Harald van Dijk via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 13 14:16:38 PDT 2024


================
@@ -1,13 +1,58 @@
-// RUN: %clang_cc1 %s -verify=c -fsyntax-only
+// RUN: %clang_cc1 %s -verify -fsyntax-only
 // RUN: %clang_cc1 %s -verify -fsyntax-only -x c++
-// RUN: %clang_cc1 %s -verify -fsyntax-only -fms-compatibility
 // RUN: %clang_cc1 %s -verify -fsyntax-only -fms-compatibility -x c++
+// RUN: %clang_cc1 %s -verify=gnu -fsyntax-only -Wgnu-flexible-array-union-member -Wgnu-empty-struct
+// RUN: %clang_cc1 %s -verify=microsoft -fsyntax-only -fms-compatibility -Wmicrosoft
 
 // The test checks that an attempt to initialize union with flexible array
 // member with an initializer list doesn't crash clang.
 
 
-union { char x[]; } r = {0}; // c-error {{flexible array member 'x' in a union is not allowed}}
+union { char x[]; } r = {0}; /* gnu-warning {{flexible array member 'x' in a union is a GNU extension}}
+                                microsoft-warning {{flexible array member 'x' in a union is a Microsoft extension}}
+                              */
----------------
hvdijk wrote:

If this is no longer an error, and the primary use case of this is for unions that are members of other structures, what are the semantics for initialization of flexible array members in unions in other structures? Is this covered sufficiently by existing tests?

https://github.com/llvm/llvm-project/pull/84428


More information about the cfe-commits mailing list