From d84cb660ff367f68465fe18fab5cd2151d73eaa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98rjan=20Malde?= Date: Thu, 16 Feb 2023 14:19:56 +0100 Subject: groups/010.host_deps.group: drop {llvm,clang}_host MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ørjan Malde --- ...f-debug-info-clonning-and-fix-correctness.patch | 102 --------------------- 1 file changed, 102 deletions(-) delete mode 100644 patches/llvm_host/llvm-0007-reduce-complexity-of-debug-info-clonning-and-fix-correctness.patch (limited to 'patches/llvm_host/llvm-0007-reduce-complexity-of-debug-info-clonning-and-fix-correctness.patch') diff --git a/patches/llvm_host/llvm-0007-reduce-complexity-of-debug-info-clonning-and-fix-correctness.patch b/patches/llvm_host/llvm-0007-reduce-complexity-of-debug-info-clonning-and-fix-correctness.patch deleted file mode 100644 index 0930c28e..00000000 --- a/patches/llvm_host/llvm-0007-reduce-complexity-of-debug-info-clonning-and-fix-correctness.patch +++ /dev/null @@ -1,102 +0,0 @@ -From af289e04413504c3bdc252e08c3fe17bf7ea6dc8 Mon Sep 17 00:00:00 2001 -From: Peter Collingbourne -Date: Wed, 30 Mar 2016 22:05:13 +0000 -Subject: [PATCH] Cloning: Reduce complexity of debug info cloning and fix - correctness issue. - -Commit r260791 contained an error in that it would introduce a cross-module -reference in the old module. It also introduced O(N^2) complexity in the -module cloner by requiring the entire module to be visited for each function. -Fix both of these problems by avoiding use of the CloneDebugInfoMetadata -function (which is only designed to do intra-module cloning) and cloning -function-attached metadata in the same way that we clone all other metadata. - -Differential Revision: http://reviews.llvm.org/D18583 - -git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264935 91177308-0d34-0410-b5e6-96231b3b80d8 - -Alpine maintainer notes: - - Corresponds to llvm-D17165-D18583.patch in Julia. ---- - include/llvm/Transforms/Utils/Cloning.h | 5 ----- - lib/Transforms/Utils/CloneFunction.cpp | 13 +++++++++++-- - lib/Transforms/Utils/CloneModule.cpp | 1 - - unittests/Transforms/Utils/Cloning.cpp | 6 ++++++ - 4 files changed, 17 insertions(+), 8 deletions(-) - -diff --git a/include/llvm/Transforms/Utils/Cloning.h b/include/llvm/Transforms/Utils/Cloning.h -index 0bae2bd..4f006f2 100644 ---- a/include/llvm/Transforms/Utils/Cloning.h -+++ b/include/llvm/Transforms/Utils/Cloning.h -@@ -130,11 +130,6 @@ Function *CloneFunction(const Function *F, ValueToValueMapTy &VMap, - bool ModuleLevelChanges, - ClonedCodeInfo *CodeInfo = nullptr); - --/// Clone the module-level debug info associated with OldFunc. The cloned data --/// will point to NewFunc instead. --void CloneDebugInfoMetadata(Function *NewFunc, const Function *OldFunc, -- ValueToValueMapTy &VMap); -- - /// Clone OldFunc into NewFunc, transforming the old arguments into references - /// to VMap values. Note that if NewFunc already has basic blocks, the ones - /// cloned into it will be added to the end of the function. This function -diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp -index 05b0a17..8e1715a 100644 ---- a/lib/Transforms/Utils/CloneFunction.cpp -+++ b/lib/Transforms/Utils/CloneFunction.cpp -@@ -119,6 +119,15 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc, - .addAttributes(NewFunc->getContext(), AttributeSet::FunctionIndex, - OldAttrs.getFnAttributes())); - -+ SmallVector, 1> MDs; -+ OldFunc->getAllMetadata(MDs); -+ for (auto MD : MDs) -+ NewFunc->setMetadata( -+ MD.first, -+ MapMetadata(MD.second, VMap, -+ ModuleLevelChanges ? RF_None : RF_NoModuleLevelChanges, -+ TypeMapper, Materializer)); -+ - // Loop over all of the basic blocks in the function, cloning them as - // appropriate. Note that we save BE this way in order to handle cloning of - // recursive functions into themselves. -@@ -187,8 +196,8 @@ static void AddOperand(DICompileUnit *CU, DISubprogramArray SPs, - - // Clone the module-level debug info associated with OldFunc. The cloned data - // will point to NewFunc instead. --void llvm::CloneDebugInfoMetadata(Function *NewFunc, const Function *OldFunc, -- ValueToValueMapTy &VMap) { -+static void CloneDebugInfoMetadata(Function *NewFunc, const Function *OldFunc, -+ ValueToValueMapTy &VMap) { - DebugInfoFinder Finder; - Finder.processModule(*OldFunc->getParent()); - -diff --git a/lib/Transforms/Utils/CloneModule.cpp b/lib/Transforms/Utils/CloneModule.cpp -index 494e275..929f51b 100644 ---- a/lib/Transforms/Utils/CloneModule.cpp -+++ b/lib/Transforms/Utils/CloneModule.cpp -@@ -138,7 +138,6 @@ std::unique_ptr llvm::CloneModule( - VMap[&*J] = &*DestI++; - } - -- CloneDebugInfoMetadata(F, &*I, VMap); - SmallVector Returns; // Ignore returns cloned. - CloneFunctionInto(F, &*I, VMap, /*ModuleLevelChanges=*/true, Returns); - } -diff --git a/unittests/Transforms/Utils/Cloning.cpp b/unittests/Transforms/Utils/Cloning.cpp -index b761e4e..f06a20f 100644 ---- a/unittests/Transforms/Utils/Cloning.cpp -+++ b/unittests/Transforms/Utils/Cloning.cpp -@@ -464,6 +464,12 @@ TEST_F(CloneModule, Verify) { - EXPECT_FALSE(verifyModule(*NewM)); - } - -+TEST_F(CloneModule, OldModuleUnchanged) { -+ DebugInfoFinder Finder; -+ Finder.processModule(*OldM); -+ EXPECT_EQ(1U, Finder.subprogram_count()); -+} -+ - TEST_F(CloneModule, Subprogram) { - Function *NewF = NewM->getFunction("f"); - DISubprogram *SP = NewF->getSubprogram(); -- cgit v1.2.3