diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
commit | c0981da47d5696fe36474fcf86b4ce03ae3ff818 (patch) | |
tree | f42add1021b9f2ac6a69ac7cf6c4499962739a45 /llvm/lib/Transforms/Scalar/BDCE.cpp | |
parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) | |
download | src-c0981da47d5696fe36474fcf86b4ce03ae3ff818.tar.gz src-c0981da47d5696fe36474fcf86b4ce03ae3ff818.zip |
Vendor import of llvm-project main llvmorg-14-init-10186-gff7f2cfa959b.vendor/llvm-project/llvmorg-14-init-10186-gff7f2cfa959b
Diffstat (limited to 'llvm/lib/Transforms/Scalar/BDCE.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/BDCE.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Scalar/BDCE.cpp b/llvm/lib/Transforms/Scalar/BDCE.cpp index c06125788f37..6c2467db79f7 100644 --- a/llvm/lib/Transforms/Scalar/BDCE.cpp +++ b/llvm/lib/Transforms/Scalar/BDCE.cpp @@ -53,7 +53,7 @@ static void clearAssumptionsOfUsers(Instruction *I, DemandedBits &DB) { // in the def-use chain needs to be changed. auto *J = dyn_cast<Instruction>(JU); if (J && J->getType()->isIntOrIntVectorTy() && - !DB.getDemandedBits(J).isAllOnesValue()) { + !DB.getDemandedBits(J).isAllOnes()) { Visited.insert(J); WorkList.push_back(J); } @@ -84,7 +84,7 @@ static void clearAssumptionsOfUsers(Instruction *I, DemandedBits &DB) { // that in the def-use chain needs to be changed. auto *K = dyn_cast<Instruction>(KU); if (K && Visited.insert(K).second && K->getType()->isIntOrIntVectorTy() && - !DB.getDemandedBits(K).isAllOnesValue()) + !DB.getDemandedBits(K).isAllOnes()) WorkList.push_back(K); } } @@ -103,12 +103,9 @@ static bool bitTrackingDCE(Function &F, DemandedBits &DB) { // Remove instructions that are dead, either because they were not reached // during analysis or have no demanded bits. if (DB.isInstructionDead(&I) || - (I.getType()->isIntOrIntVectorTy() && - DB.getDemandedBits(&I).isNullValue() && + (I.getType()->isIntOrIntVectorTy() && DB.getDemandedBits(&I).isZero() && wouldInstructionBeTriviallyDead(&I))) { - salvageDebugInfo(I); Worklist.push_back(&I); - I.dropAllReferences(); Changed = true; continue; } @@ -155,6 +152,11 @@ static bool bitTrackingDCE(Function &F, DemandedBits &DB) { } } + for (Instruction *&I : llvm::reverse(Worklist)) { + salvageDebugInfo(*I); + I->dropAllReferences(); + } + for (Instruction *&I : Worklist) { ++NumRemoved; I->eraseFromParent(); |