summaryrefslogtreecommitdiff
path: root/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-05-18 01:35:41 +0000
committerbors <bors@rust-lang.org>2023-05-18 01:35:41 +0000
commit77fb0cd3aa276919e00397f526616c5036562ea1 (patch)
treefdcc29ce323213490b0318593835e7dd6d7c4b9f /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
parent24c180c438b5ee9a150d20b9822bd7712bef8f62 (diff)
parentc836c24994f0113effd0409d8d063b4f4e68f5b6 (diff)
downloadrust-master.tar.gz
Auto merge of #111364 - cuviper:unhack-thinlto, r=nikicHEADmaster
Remove the ThinLTO CU hack This reverts #46722, commit e0ab5d5feb4eb2d8af11b8dd9446c2b45fada8af. Since #111167, commit 10b69dde3fd15334ea2382d2dc9e9a261de1afaf, we are generating DWARF subprograms in a way that is meant to be more compatible with LLVM's expectations, so hopefully we don't need this workaround rewriting CUs anymore.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
-rw-r--r--compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp57
1 files changed, 0 insertions, 57 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
index 7b774d6865c..c43a0272477 100644
--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
@@ -1463,63 +1463,6 @@ LLVMRustGetBitcodeSliceFromObjectData(const char *data,
return BitcodeOrError->getBufferStart();
}
-// Rewrite all `DICompileUnit` pointers to the `DICompileUnit` specified. See
-// the comment in `back/lto.rs` for why this exists.
-extern "C" void
-LLVMRustThinLTOGetDICompileUnit(LLVMModuleRef Mod,
- DICompileUnit **A,
- DICompileUnit **B) {
- Module *M = unwrap(Mod);
- DICompileUnit **Cur = A;
- DICompileUnit **Next = B;
- for (DICompileUnit *CU : M->debug_compile_units()) {
- *Cur = CU;
- Cur = Next;
- Next = nullptr;
- if (Cur == nullptr)
- break;
- }
-}
-
-// Rewrite all `DICompileUnit` pointers to the `DICompileUnit` specified. See
-// the comment in `back/lto.rs` for why this exists.
-extern "C" void
-LLVMRustThinLTOPatchDICompileUnit(LLVMModuleRef Mod, DICompileUnit *Unit) {
- Module *M = unwrap(Mod);
-
- // If the original source module didn't have a `DICompileUnit` then try to
- // merge all the existing compile units. If there aren't actually any though
- // then there's not much for us to do so return.
- if (Unit == nullptr) {
- for (DICompileUnit *CU : M->debug_compile_units()) {
- Unit = CU;
- break;
- }
- if (Unit == nullptr)
- return;
- }
-
- // Use LLVM's built-in `DebugInfoFinder` to find a bunch of debuginfo and
- // process it recursively. Note that we used to specifically iterate over
- // instructions to ensure we feed everything into it, but `processModule`
- // started doing this the same way in LLVM 7 (commit d769eb36ab2b8).
- DebugInfoFinder Finder;
- Finder.processModule(*M);
-
- // After we've found all our debuginfo, rewrite all subprograms to point to
- // the same `DICompileUnit`.
- for (auto &F : Finder.subprograms()) {
- F->replaceUnit(Unit);
- }
-
- // Erase any other references to other `DICompileUnit` instances, the verifier
- // will later ensure that we don't actually have any other stale references to
- // worry about.
- auto *MD = M->getNamedMetadata("llvm.dbg.cu");
- MD->clearOperands();
- MD->addOperand(Unit);
-}
-
// Computes the LTO cache key for the provided 'ModId' in the given 'Data',
// storing the result in 'KeyOut'.
// Currently, this cache key is a SHA-1 hash of anything that could affect