[clang] d74b663 - Fix LIT failure on native aix

Xiangling Liao via cfe-commits cfe-commits at lists.llvm.org
Thu May 20 06:39:14 PDT 2021


Author: Xiangling Liao
Date: 2021-05-20T09:38:52-04:00
New Revision: d74b6635ef38d123793f025a2ea1ef28153d803a

URL: https://github.com/llvm/llvm-project/commit/d74b6635ef38d123793f025a2ea1ef28153d803a
DIFF: https://github.com/llvm/llvm-project/commit/d74b6635ef38d123793f025a2ea1ef28153d803a.diff

LOG: Fix LIT failure on native aix

On AIX, char bitfields have the same alignment as unsigned int.
Reference: https://reviews.llvm.org/D87029

Differential Revision: https://reviews.llvm.org/D102715

Added: 
    

Modified: 
    clang/test/Sema/struct-packed-align.c

Removed: 
    


################################################################################
diff  --git a/clang/test/Sema/struct-packed-align.c b/clang/test/Sema/struct-packed-align.c
index 122b7f2764612..b4bddebe230e2 100644
--- a/clang/test/Sema/struct-packed-align.c
+++ b/clang/test/Sema/struct-packed-align.c
@@ -146,18 +146,17 @@ extern int n2[__alignof(struct nS) == 1 ? 1 : -1];
 // GCC 4.4 but the change can lead to 
diff erences in the structure layout.
 // See the documentation of -Wpacked-bitfield-compat for more information.
 struct packed_chars {
-  char a:4;
+  char a : 8, b : 8, c : 8, d : 4;
 #ifdef __ORBIS__
   // Test for pre-r254596 clang behavior on the PS4 target. PS4 must maintain
   // ABI backwards compatibility.
-  char b:8 __attribute__ ((packed));
+  char e : 8 __attribute__((packed));
   // expected-warning at -1 {{'packed' attribute ignored for field of type 'char'}}
-  char c:4;
 #else
-  char b:8 __attribute__ ((packed));
+  char e : 8 __attribute__((packed));
   // expected-warning at -1 {{'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang}}
-  char c:4;
 #endif
+  char f : 4, g : 8, h : 8, i : 8;
 };
 
 #if (defined(_WIN32) || defined(__ORBIS__)) && !defined(__declspec) // _MSC_VER is unavailable in cc1.
@@ -165,9 +164,13 @@ struct packed_chars {
 //
 // Additionally, test for pre-r254596 clang behavior on the PS4 target. PS4
 // must maintain ABI backwards compatibility.
-extern int o1[sizeof(struct packed_chars) == 3 ? 1 : -1];
+extern int o1[sizeof(struct packed_chars) == 9 ? 1 : -1];
 extern int o2[__alignof(struct packed_chars) == 1 ? 1 : -1];
+#elif defined(_AIX)
+// On AIX, char bitfields have the same alignment as unsigned int.
+extern int o1[sizeof(struct packed_chars) == 8 ? 1 : -1];
+extern int o2[__alignof(struct packed_chars) == 4 ? 1 : -1];
 #else
-extern int o1[sizeof(struct packed_chars) == 2 ? 1 : -1];
+extern int o1[sizeof(struct packed_chars) == 8 ? 1 : -1];
 extern int o2[__alignof(struct packed_chars) == 1 ? 1 : -1];
 #endif


        


More information about the cfe-commits mailing list