From: Josh Stone Date: Fri, 26 Apr 2019 15:58:14 +0000 (-0700) Subject: [PATCH] Limit internalization in LLVM 8 ThinLTO X-Git-Tag: archive/raspbian/1.34.2+dfsg1-1+rpi1^2~24 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c79e94f685a2366f4ae966a92c1a89ed0880d968;p=rustc.git [PATCH] Limit internalization in LLVM 8 ThinLTO Gbp-Pq: Name u-0001-Limit-internalization-in-LLVM-8-ThinLTO.patch --- diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index 25595e1498..95ff95312a 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -866,8 +866,11 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules, return PrevailingType::Unknown; }; #if LLVM_VERSION_GE(8, 0) + // We don't have a complete picture in our use of ThinLTO, just our immediate + // crate, so we need `ImportEnabled = false` to limit internalization. + // Otherwise, we sometimes lose `static` values -- see #60184. computeDeadSymbolsWithConstProp(Ret->Index, Ret->GUIDPreservedSymbols, - deadIsPrevailing, /* ImportEnabled = */ true); + deadIsPrevailing, /* ImportEnabled = */ false); #else computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing); #endif