[llvm] abbbc48 - Revert "Improve the effectiveness of BDCE's debug info salvaging"

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 28 12:52:36 PDT 2021


Author: Nikita Popov
Date: 2021-09-28T21:52:27+02:00
New Revision: abbbc480a152c1afbac215064f22ae07c87ed964

URL: https://github.com/llvm/llvm-project/commit/abbbc480a152c1afbac215064f22ae07c87ed964
DIFF: https://github.com/llvm/llvm-project/commit/abbbc480a152c1afbac215064f22ae07c87ed964.diff

LOG: 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, <badref>
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.

Added: 
    

Modified: 
    llvm/lib/Transforms/Scalar/BDCE.cpp
    llvm/test/Transforms/Util/salvage-debuginfo.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Scalar/BDCE.cpp b/llvm/lib/Transforms/Scalar/BDCE.cpp
index 7ae1666f4cbb0..c06125788f37e 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<Instruction*, 128> 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 d72b239e31644..ed1baa56017af 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 {


        


More information about the llvm-commits mailing list