diff options
author | Fangrui Song <i@maskray.me> | 2020-08-29 18:27:34 -0700 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2020-08-29 18:27:34 -0700 |
commit | 6ae7b403c3e1aebcb825d3dd4777d3c1149d6d67 (patch) | |
tree | 9f72ecb91e9a15ba427dfd6618d67e892276dc49 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 4fbf0636a214abbc30b6eee42bd5b7755dfd5f38 (diff) | |
download | llvm-6ae7b403c3e1aebcb825d3dd4777d3c1149d6d67.zip llvm-6ae7b403c3e1aebcb825d3dd4777d3c1149d6d67.tar.gz llvm-6ae7b403c3e1aebcb825d3dd4777d3c1149d6d67.tar.bz2 |
Set alignment of .llvmbc and .llvmcmd to 1
Otherwise their alignment is dependent on the size of the section. If the size
is large than 16, the alignment will be 16.
16 is a bad choice for both .llvmbc and .llvmcmd because the padding between two
contributions from input sections is of a variable size.
A bitstream is actually guaranteed to be 4-byte aligned, but consumers don't
need this property.
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index f263090..eaea026 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -4852,6 +4852,9 @@ void llvm::EmbedBitcodeInModule(llvm::Module &M, llvm::MemoryBufferRef Buf, M, ModuleConstant->getType(), true, llvm::GlobalValue::PrivateLinkage, ModuleConstant); GV->setSection(getSectionNameForBitcode(T)); + // Set alignment to 1 to prevent padding between two contributions from input + // sections after linking. + GV->setAlignment(Align(1)); UsedArray.push_back( ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, UsedElementType)); if (llvm::GlobalVariable *Old = @@ -4875,6 +4878,7 @@ void llvm::EmbedBitcodeInModule(llvm::Module &M, llvm::MemoryBufferRef Buf, llvm::GlobalValue::PrivateLinkage, CmdConstant); GV->setSection(getSectionNameForCommandline(T)); + GV->setAlignment(Align(1)); UsedArray.push_back( ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, UsedElementType)); if (llvm::GlobalVariable *Old = M.getGlobalVariable("llvm.cmdline", true)) { |