summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGVTables.cpp
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2018-09-12 14:09:06 +0000
committerDavid Green <david.green@arm.com>2018-09-12 14:09:06 +0000
commitbe0c5b6d3c415ae2b778c7c641e3f451652718f7 (patch)
treec630557d436e909d11b8db527cad760319ee1d2c /clang/lib/CodeGen/CGVTables.cpp
parenta34679658f881a6751651e0891b08af44b48fe69 (diff)
downloadbcm5719-llvm-be0c5b6d3c415ae2b778c7c641e3f451652718f7.tar.gz
bcm5719-llvm-be0c5b6d3c415ae2b778c7c641e3f451652718f7.zip
[CodeGen] Align rtti and vtable data
Previously the alignment on the newly created rtti/typeinfo data was largely not set, meaning that DataLayout::getPreferredAlignment was free to overalign it to 16 bytes. This causes unnecessary code bloat. Differential Revision: https://reviews.llvm.org/D51416 llvm-svn: 342053
Diffstat (limited to 'clang/lib/CodeGen/CGVTables.cpp')
-rw-r--r--clang/lib/CodeGen/CGVTables.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp
index d07c160e241..df20b9bb46a 100644
--- a/clang/lib/CodeGen/CGVTables.cpp
+++ b/clang/lib/CodeGen/CGVTables.cpp
@@ -756,9 +756,11 @@ CodeGenVTables::GenerateConstructionVTable(const CXXRecordDecl *RD,
if (Linkage == llvm::GlobalVariable::AvailableExternallyLinkage)
Linkage = llvm::GlobalVariable::InternalLinkage;
+ unsigned Align = CGM.getDataLayout().getABITypeAlignment(VTType);
+
// Create the variable that will hold the construction vtable.
llvm::GlobalVariable *VTable =
- CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);
+ CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage, Align);
CGM.setGVProperties(VTable, RD);
// V-tables are always unnamed_addr.
OpenPOWER on IntegriCloud