From abbbc480a152c1afbac215064f22ae07c87ed964 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 28 Sep 2021 21:49:36 +0200 Subject: [PATCH] Revert "Improve the effectiveness of BDCE's debug info salvaging" This reverts commit f6954bf80472cbfc06e39dac75a4a72120c9bd15. This breaks the test-suite O3 build: /home/nikic/llvm-test-suite/build-O3/tools/timeit --summary Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o.time /home/nikic/llvm-project/build/bin/clang++ -DNDEBUG -O3 -w -Werror=date-time -save-stats=obj -save-stats=obj -std=c++11 -MD -MT Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o -MF Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o.d -o Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o -c ../Bitcode/Benchmarks/Halide/local_laplacian/local_laplacian.bc While deleting: i64 % Use still stuck around after Def is destroyed: %12620 = mul i64 %12619, clang++: /home/nikic/llvm-project/llvm/lib/IR/Value.cpp:103: llvm::Value::~Value(): Assertion `materialized_use_empty() && "Uses remain when a value is destroyed!"' failed. --- llvm/lib/Transforms/Scalar/BDCE.cpp | 6 ++---- llvm/test/Transforms/Util/salvage-debuginfo.ll | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/BDCE.cpp b/llvm/lib/Transforms/Scalar/BDCE.cpp index 7ae1666..c061257 100644 --- a/llvm/lib/Transforms/Scalar/BDCE.cpp +++ b/llvm/lib/Transforms/Scalar/BDCE.cpp @@ -93,7 +93,7 @@ static void clearAssumptionsOfUsers(Instruction *I, DemandedBits &DB) { static bool bitTrackingDCE(Function &F, DemandedBits &DB) { SmallVector Worklist; bool Changed = false; - for (Instruction &I : llvm::reverse(instructions(F))) { + for (Instruction &I : instructions(F)) { // If the instruction has side effects and no non-dbg uses, // skip it. This way we avoid computing known bits on an instruction // that will not help us. @@ -108,6 +108,7 @@ static bool bitTrackingDCE(Function &F, DemandedBits &DB) { wouldInstructionBeTriviallyDead(&I))) { salvageDebugInfo(I); Worklist.push_back(&I); + I.dropAllReferences(); Changed = true; continue; } @@ -154,9 +155,6 @@ static bool bitTrackingDCE(Function &F, DemandedBits &DB) { } } - for (Instruction *&I : Worklist) - I->dropAllReferences(); - for (Instruction *&I : Worklist) { ++NumRemoved; I->eraseFromParent(); diff --git a/llvm/test/Transforms/Util/salvage-debuginfo.ll b/llvm/test/Transforms/Util/salvage-debuginfo.ll index d72b239..ed1baa5 100644 --- a/llvm/test/Transforms/Util/salvage-debuginfo.ll +++ b/llvm/test/Transforms/Util/salvage-debuginfo.ll @@ -1,5 +1,4 @@ ; RUN: opt -adce %s -S -o - | FileCheck %s -; RUN: opt -bdce %s -S -o - | FileCheck %s target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx" define void @f(i32) !dbg !8 { -- 2.7.4