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/CodeGenModule.cpp | |
parent | a34679658f881a6751651e0891b08af44b48fe69 (diff) | |
download | llvm-be0c5b6d3c415ae2b778c7c641e3f451652718f7.zip llvm-be0c5b6d3c415ae2b778c7c641e3f451652718f7.tar.gz llvm-be0c5b6d3c415ae2b778c7c641e3f451652718f7.tar.bz2 |
[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/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 5fec6c7..6d42b3c 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -3099,10 +3099,9 @@ CodeGenModule::GetAddrOfGlobal(GlobalDecl GD, IsForDefinition); } -llvm::GlobalVariable * -CodeGenModule::CreateOrReplaceCXXRuntimeVariable(StringRef Name, - llvm::Type *Ty, - llvm::GlobalValue::LinkageTypes Linkage) { +llvm::GlobalVariable *CodeGenModule::CreateOrReplaceCXXRuntimeVariable( + StringRef Name, llvm::Type *Ty, llvm::GlobalValue::LinkageTypes Linkage, + unsigned Alignment) { llvm::GlobalVariable *GV = getModule().getNamedGlobal(Name); llvm::GlobalVariable *OldGV = nullptr; @@ -3138,6 +3137,8 @@ CodeGenModule::CreateOrReplaceCXXRuntimeVariable(StringRef Name, !GV->hasAvailableExternallyLinkage()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); + GV->setAlignment(Alignment); + return GV; } |