diff --git a/llvm/include/llvm/IR/IntrinsicInst.h b/llvm/include/llvm/IR/IntrinsicInst.h --- a/llvm/include/llvm/IR/IntrinsicInst.h +++ b/llvm/include/llvm/IR/IntrinsicInst.h @@ -267,7 +267,7 @@ getIntrinsicID() != Intrinsic::dbg_assign; } - void setUndef() { + void setKillLocation() { // TODO: When/if we remove duplicate values from DIArgLists, we don't need // this set anymore. SmallPtrSet RemovedValues; @@ -279,7 +279,7 @@ } } - bool isUndef() const { + bool isKillLocation() const { return (getNumVariableLocationOps() == 0 && !getExpression()->isComplex()) || any_of(location_ops(), [](Value *V) { return isa(V); }); diff --git a/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp b/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp --- a/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp +++ b/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp @@ -2111,7 +2111,8 @@ // operand is nullptr. We also can't handle variadic DIExpressions yet. // Some of those conditions don't have a type we can pick for // undef. Use i32. - if (DVI->isUndef() || DVI->getValue() == nullptr || DVI->hasArgList()) + if (DVI->isKillLocation() || DVI->getValue() == nullptr || + DVI->hasArgList()) return UndefValue::get(Type::getInt32Ty(DVI->getContext())); return DVI->getValue(); }; diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -8326,7 +8326,7 @@ dbgs() << "Unable to find valid location for Debug Value, undefing:\n" << *DVI); - DVI->setUndef(); + DVI->setKillLocation(); break; } diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp --- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -6389,7 +6389,7 @@ llvm::PHINode *LSRInductionVar, DVIRecoveryRec &DVIRec, const SCEV *SCEVInductionVar, SCEVDbgValueBuilder IterCountExpr) { - if (!DVIRec.DVI->isUndef()) + if (!DVIRec.DVI->isKillLocation()) return false; // LSR may have caused several changes to the dbg.value in the failed salvage @@ -6538,7 +6538,7 @@ continue; // Ensure that if any location op is undef that the dbg.vlue is not // cached. - if (DVI->isUndef()) + if (DVI->isKillLocation()) continue; // Check that the location op SCEVs are suitable for translation to diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -502,8 +502,8 @@ bool IsDbgValueKind = (!DAI || at::getAssignmentInsts(DAI).empty()); DebugVariable Aggregate = GetAggregateVariable(DVI); if (!SeenDefForAggregate.contains(Aggregate)) { - bool IsUndef = DVI->isUndef() && IsDbgValueKind; - if (!IsUndef) { + bool IsKill = DVI->isKillLocation() && IsDbgValueKind; + if (!IsKill) { SeenDefForAggregate.insert(Aggregate); } else if (DAI) { ToBeRemoved.push_back(DAI); diff --git a/llvm/lib/Transforms/Utils/Debugify.cpp b/llvm/lib/Transforms/Utils/Debugify.cpp --- a/llvm/lib/Transforms/Utils/Debugify.cpp +++ b/llvm/lib/Transforms/Utils/Debugify.cpp @@ -345,7 +345,7 @@ if (I.getDebugLoc().getInlinedAt()) continue; // Skip undef values. - if (DVI->isUndef()) + if (DVI->isKillLocation()) continue; auto *Var = DVI->getVariable(); @@ -588,7 +588,7 @@ if (I.getDebugLoc().getInlinedAt()) continue; // Skip undef values. - if (DVI->isUndef()) + if (DVI->isKillLocation()) continue; auto *Var = DVI->getVariable(); diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -637,7 +637,7 @@ "There should be a non-PHI instruction in exit block, else these " "instructions will have no parent."); for (auto *DVI : DeadDebugInst) { - DVI->setUndef(); + DVI->setKillLocation(); DVI->moveBefore(InsertDbgValueBefore); } } diff --git a/llvm/unittests/Transforms/Utils/LocalTest.cpp b/llvm/unittests/Transforms/Utils/LocalTest.cpp --- a/llvm/unittests/Transforms/Utils/LocalTest.cpp +++ b/llvm/unittests/Transforms/Utils/LocalTest.cpp @@ -786,7 +786,7 @@ auto *FDbgVal = cast(F_.getNextNode()); EXPECT_EQ(FDbgVal->getNumVariableLocationOps(), 1u); - EXPECT_TRUE(FDbgVal->isUndef()); + EXPECT_TRUE(FDbgVal->isKillLocation()); SmallVector FDbgVals; findDbgValues(FDbgVals, &F_);