summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/RecordLayoutBuilder.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2012-10-12 23:29:20 +0000
committerEli Friedman <eli.friedman@gmail.com>2012-10-12 23:29:20 +0000
commit9ee2d04753c8e0ce6f1e58ed4cf9a830e443dbba (patch)
tree740ba651775af1c11250051f44fa1a77d9e8df09 /clang/lib/AST/RecordLayoutBuilder.cpp
parentb556c9b9dbbac26c1323452c41f2d3a1aca004c9 (diff)
downloadbcm5719-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.cpp10
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.
OpenPOWER on IntegriCloud