diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-10-12 23:29:20 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-10-12 23:29:20 +0000 |
commit | 9ee2d04753c8e0ce6f1e58ed4cf9a830e443dbba (patch) | |
tree | 740ba651775af1c11250051f44fa1a77d9e8df09 /clang/lib/AST/RecordLayoutBuilder.cpp | |
parent | b556c9b9dbbac26c1323452c41f2d3a1aca004c9 (diff) | |
download | bcm5719-llvm-9ee2d04753c8e0ce6f1e58ed4cf9a830e443dbba.tar.gz bcm5719-llvm-9ee2d04753c8e0ce6f1e58ed4cf9a830e443dbba.zip |
Make -mms-bitfields behave consistently.
Patch by Jeremiah Zanin.
llvm-svn: 165849
Diffstat (limited to 'clang/lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r-- | clang/lib/AST/RecordLayoutBuilder.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index fc7586cffd6..2bdc1e14e67 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/lib/AST/RecordLayoutBuilder.cpp @@ -1574,12 +1574,12 @@ CharUnits RecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) { } void RecordLayoutBuilder::InitializeLayout(const Decl *D) { - if (const RecordDecl *RD = dyn_cast<RecordDecl>(D)) + if (const RecordDecl *RD = dyn_cast<RecordDecl>(D)) { IsUnion = RD->isUnion(); + IsMsStruct = RD->isMsStruct(Context); + } - Packed = D->hasAttr<PackedAttr>(); - - IsMsStruct = D->hasAttr<MsStructAttr>(); + Packed = D->hasAttr<PackedAttr>(); // Honor the default struct packing maximum alignment flag. if (unsigned DefaultMaxFieldAlignment = Context.getLangOpts().PackStruct) { @@ -2085,7 +2085,7 @@ void RecordLayoutBuilder::LayoutField(const FieldDecl *D) { ZeroLengthBitfield = 0; } - if (Context.getLangOpts().MSBitfields || IsMsStruct) { + if (IsMsStruct) { // If MS bitfield layout is required, figure out what type is being // laid out and align the field to the width of that type. |