MS ABI: Padding injected between empty vbases doesn't up required align
Only alignment is changed, not required alignment.
llvm-svn: 213217
diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp
index b5ebbee..b3deeba 100644
--- a/clang/lib/AST/RecordLayoutBuilder.cpp
+++ b/clang/lib/AST/RecordLayoutBuilder.cpp
@@ -2615,7 +2615,7 @@
if ((PreviousBaseLayout && PreviousBaseLayout->hasZeroSizedSubObject() &&
BaseLayout.leadsWithZeroSizedBase()) || HasVtordisp) {
Size = Size.RoundUpToAlignment(VtorDispAlignment) + VtorDispSize;
- RequiredAlignment = VtorDispAlignment;
+ Alignment = std::max(VtorDispAlignment, Alignment);
}
// Insert the virtual base.
ElementInfo Info = getAdjustedElementInfo(BaseLayout);