From 9ee2d04753c8e0ce6f1e58ed4cf9a830e443dbba Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Fri, 12 Oct 2012 23:29:20 +0000 Subject: Make -mms-bitfields behave consistently. Patch by Jeremiah Zanin. llvm-svn: 165849 --- clang/lib/AST/RecordLayoutBuilder.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'clang/lib/AST/RecordLayoutBuilder.cpp') 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(D)) + if (const RecordDecl *RD = dyn_cast(D)) { IsUnion = RD->isUnion(); + IsMsStruct = RD->isMsStruct(Context); + } - Packed = D->hasAttr(); - - IsMsStruct = D->hasAttr(); + Packed = D->hasAttr(); // 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. -- cgit v1.2.3