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@-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@-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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits