Blame SOURCES/0001-Limit-internalization-in-LLVM-8-ThinLTO.patch

ec855a
From b4131e297e18fde119f6f461b3e622218166b009 Mon Sep 17 00:00:00 2001
ec855a
From: Josh Stone <jistone@redhat.com>
ec855a
Date: Fri, 26 Apr 2019 08:58:14 -0700
ec855a
Subject: [PATCH] Limit internalization in LLVM 8 ThinLTO
ec855a
ec855a
---
ec855a
 src/rustllvm/PassWrapper.cpp | 5 ++++-
ec855a
 1 file changed, 4 insertions(+), 1 deletion(-)
ec855a
ec855a
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
ec855a
index 319c66a21f17..0ebef82d3768 100644
ec855a
--- a/src/rustllvm/PassWrapper.cpp
ec855a
+++ b/src/rustllvm/PassWrapper.cpp
ec855a
@@ -873,8 +873,11 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules,
ec855a
     return PrevailingType::Unknown;
ec855a
   };
ec855a
 #if LLVM_VERSION_GE(8, 0)
ec855a
+  // We don't have a complete picture in our use of ThinLTO, just our immediate
ec855a
+  // crate, so we need `ImportEnabled = false` to limit internalization.
ec855a
+  // Otherwise, we sometimes lose `static` values -- see #60184.
ec855a
   computeDeadSymbolsWithConstProp(Ret->Index, Ret->GUIDPreservedSymbols,
ec855a
-                                  deadIsPrevailing, /* ImportEnabled = */ true);
ec855a
+                                  deadIsPrevailing, /* ImportEnabled = */ false);
ec855a
 #else
ec855a
   computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing);
ec855a
 #endif
ec855a
-- 
ec855a
2.20.1
ec855a