diff options
author | David Green <david.green@arm.com> | 2018-09-12 14:09:06 +0000 |
---|---|---|
committer | David Green <david.green@arm.com> | 2018-09-12 14:09:06 +0000 |
commit | be0c5b6d3c415ae2b778c7c641e3f451652718f7 (patch) | |
tree | c630557d436e909d11b8db527cad760319ee1d2c /clang/lib/CodeGen/CGVTables.cpp | |
parent | a34679658f881a6751651e0891b08af44b48fe69 (diff) | |
download | bcm5719-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.cpp | 4 |
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. |