Merge pull request #28704 from aschwaighofer/remove_unnamed_addr_constants_jit_workaround

Remove workaround for unnamed_addr constants for LLVM JIT
This commit is contained in:
Arnold Schwaighofer 2019-12-11 13:11:13 -08:00 коммит произвёл GitHub
Родитель 16b96115a1 71bb9a9d73
Коммит bddb9e9d57
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 2 добавлений и 7 удалений

Просмотреть файл

@ -2590,20 +2590,15 @@ static llvm::GlobalVariable *createGOTEquivalent(IRGenModule &IGM,
global,
llvm::Twine("got.") + globalName);
// rdar://problem/50968433: Unnamed_addr constants appear to get emitted
// with incorrect alignment by the LLVM JIT in some cases. Don't use
// unnamed_addr as a workaround.
// rdar://problem/53836960: i386 ld64 also mis-links relative references
// to GOT entries.
if (!IGM.getOptions().UseJIT
&& (!IGM.Triple.isOSDarwin()
|| IGM.Triple.getArch() != llvm::Triple::x86)) {
if (!IGM.Triple.isOSDarwin() || IGM.Triple.getArch() != llvm::Triple::x86) {
gotEquivalent->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
} else {
ApplyIRLinkage(IRLinkage::InternalLinkOnceODR)
.to(gotEquivalent);
}
return gotEquivalent;
}