[PATCH] D102715: [AIX] Fix LIT failure on native aix
Xiangling Liao via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed May 19 07:59:31 PDT 2021
Xiangling_L updated this revision to Diff 346462.
Xiangling_L added a comment.
Adjusted the testcase so that it also tests the property well on aix;
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102715/new/
https://reviews.llvm.org/D102715
Files:
clang/test/Sema/struct-packed-align.c
Index: clang/test/Sema/struct-packed-align.c
===================================================================
--- clang/test/Sema/struct-packed-align.c
+++ clang/test/Sema/struct-packed-align.c
@@ -146,18 +146,17 @@
// GCC 4.4 but the change can lead to differences 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,14 @@
//
// 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, [bool, char, short] 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D102715.346462.patch
Type: text/x-patch
Size: 1888 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210519/1feb9058/attachment.bin>
More information about the cfe-commits
mailing list