diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-08-04 01:21:14 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-08-04 01:21:14 +0000 |
commit | 18903ee2d383a93d079a801258bf25d46ba1f995 (patch) | |
tree | 983435286ec5ba090595c468993835003a088587 /clang/lib/Basic/Targets.cpp | |
parent | bc673fb5f2fb6f1a8b148f9bc4bf3cabd2ff8184 (diff) | |
download | bcm5719-llvm-18903ee2d383a93d079a801258bf25d46ba1f995.tar.gz bcm5719-llvm-18903ee2d383a93d079a801258bf25d46ba1f995.zip |
Add partial support for using anonymous bitfields (e.g., int : 0) to enforce
alignment. This fixes cases where the anonymous bitfield is followed by a
non-bitfield member. E.g.,
struct t4
{
int foo : 1;
long : 0;
char bar;
};
Part of rdar://9859156
llvm-svn: 136858
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index ec45a87fa02..89b6ce960b0 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1963,6 +1963,16 @@ public: // structures. This corresponds to PCC_BITFIELD_TYPE_MATTERS in gcc. UseBitFieldTypeAlignment = false; + /// Do force alignment of members that follow zero length bitfields. If + /// the alignment of the zero-length bitfield is greater than the member + /// that follows it, `bar', `bar' will be aligned as the type of the + /// zero length bitfield. + UseZeroLengthBitfieldAlignment = true; + + /// gcc forces the alignment to 4 bytes, regardless of the type of the + /// zero length bitfield. + ZeroLengthBitfieldBoundary = 32; + if (IsThumb) { // Thumb1 add sp, #imm requires the immediate value be multiple of 4, // so set preferred for small types to 32. |