[llvm] [DebugInfo][RemoveDIs] Remove a swathe of debug-intrinsic code (PR #144389)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 16 09:44:51 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: Jeremy Morse (jmorse)
<details>
<summary>Changes</summary>
Seeing how we can't generate any debug intrinsics any more: delete a variety of codepaths where they're handled. For the most part these are plain deletions, in others I've tweaked comments to remain coherent, or added a type to (what was) type-generic-lambdas.
This isn't all the DbgInfoIntrinsic call sites but it's most of the simple scenarios.
In a radical departure from my general MO, I've run clang-format before submitting this patch: the things that clang-format complains about in the remaining hunks are all adjacent misformats such as from manual alignment of comments. I've taken clang-format fixes to everything I've touched, but I don't think it's helpful to review to fix all the clang-format errors nearby to these changes.
---
Patch is 59.25 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/144389.diff
41 Files Affected:
- (modified) llvm/include/llvm/Analysis/IRSimilarityIdentifier.h (-4)
- (modified) llvm/include/llvm/Analysis/PtrUseVisitor.h (-1)
- (modified) llvm/include/llvm/IR/InstVisitor.h (-10)
- (modified) llvm/include/llvm/Transforms/Utils/Local.h (+2-5)
- (modified) llvm/lib/Analysis/AliasSetTracker.cpp (-3)
- (modified) llvm/lib/Analysis/CallGraph.cpp (+2-3)
- (modified) llvm/lib/Analysis/DemandedBits.cpp (+1-2)
- (modified) llvm/lib/Analysis/Loads.cpp (+1-1)
- (modified) llvm/lib/Analysis/MemoryDependenceAnalysis.cpp (-8)
- (modified) llvm/lib/Analysis/ValueTracking.cpp (-6)
- (modified) llvm/lib/CodeGen/CodeGenPrepare.cpp (+4-10)
- (modified) llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (+1-4)
- (modified) llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (-1)
- (modified) llvm/lib/IR/DebugInfo.cpp (-5)
- (modified) llvm/lib/Target/AArch64/AArch64StackTagging.cpp (+1-2)
- (modified) llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp (+1-1)
- (modified) llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp (+2-3)
- (modified) llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp (+1-3)
- (modified) llvm/lib/Transforms/IPO/IROutliner.cpp (-11)
- (modified) llvm/lib/Transforms/IPO/SampleProfileProbe.cpp (+1-2)
- (modified) llvm/lib/Transforms/InstCombine/InstructionCombining.cpp (+3-9)
- (modified) llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp (-8)
- (modified) llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp (+1-2)
- (modified) llvm/lib/Transforms/Scalar/ADCE.cpp (+1-14)
- (modified) llvm/lib/Transforms/Scalar/GVN.cpp (+1-6)
- (modified) llvm/lib/Transforms/Scalar/GVNHoist.cpp (+1-2)
- (modified) llvm/lib/Transforms/Scalar/LICM.cpp (-4)
- (modified) llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp (+1-5)
- (modified) llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp (+1-1)
- (modified) llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp (+1-7)
- (modified) llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp (+3-14)
- (modified) llvm/lib/Transforms/Utils/CodeExtractor.cpp (+8-43)
- (modified) llvm/lib/Transforms/Utils/Debugify.cpp (+2-14)
- (modified) llvm/lib/Transforms/Utils/Evaluator.cpp (-7)
- (modified) llvm/lib/Transforms/Utils/InlineFunction.cpp (+2-7)
- (modified) llvm/lib/Transforms/Utils/Local.cpp (+3-8)
- (modified) llvm/lib/Transforms/Utils/LoopRotationUtils.cpp (+10-34)
- (modified) llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp (+2-13)
- (modified) llvm/lib/Transforms/Utils/SimplifyCFG.cpp (+47-112)
- (modified) llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp (-2)
- (modified) llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (-3)
``````````diff
diff --git a/llvm/include/llvm/Analysis/IRSimilarityIdentifier.h b/llvm/include/llvm/Analysis/IRSimilarityIdentifier.h
index dfda2dcee0db1..09a8875e1e28c 100644
--- a/llvm/include/llvm/Analysis/IRSimilarityIdentifier.h
+++ b/llvm/include/llvm/Analysis/IRSimilarityIdentifier.h
@@ -545,10 +545,6 @@ struct IRInstructionMapper {
// dependent.
InstrType visitLandingPadInst(LandingPadInst &LPI) { return Illegal; }
InstrType visitFuncletPadInst(FuncletPadInst &FPI) { return Illegal; }
- // DebugInfo should be included in the regions, but should not be
- // analyzed for similarity as it has no bearing on the outcome of the
- // program.
- InstrType visitDbgInfoIntrinsic(DbgInfoIntrinsic &DII) { return Invisible; }
InstrType visitIntrinsicInst(IntrinsicInst &II) {
// These are disabled due to complications in the CodeExtractor when
// outlining these instructions. For instance, It is unclear what we
diff --git a/llvm/include/llvm/Analysis/PtrUseVisitor.h b/llvm/include/llvm/Analysis/PtrUseVisitor.h
index c9d3874e7dd96..0858d8aee2186 100644
--- a/llvm/include/llvm/Analysis/PtrUseVisitor.h
+++ b/llvm/include/llvm/Analysis/PtrUseVisitor.h
@@ -285,7 +285,6 @@ class PtrUseVisitor : protected InstVisitor<DerivedT>,
// No-op intrinsics which we know don't escape the pointer to logic in
// some other function.
- void visitDbgInfoIntrinsic(DbgInfoIntrinsic &I) {}
void visitMemIntrinsic(MemIntrinsic &I) {}
void visitIntrinsicInst(IntrinsicInst &II) {
switch (II.getIntrinsicID()) {
diff --git a/llvm/include/llvm/IR/InstVisitor.h b/llvm/include/llvm/IR/InstVisitor.h
index b4eb729c7ce38..6d5398bb7a4cd 100644
--- a/llvm/include/llvm/IR/InstVisitor.h
+++ b/llvm/include/llvm/IR/InstVisitor.h
@@ -199,13 +199,6 @@ class InstVisitor {
RetTy visitCatchPadInst(CatchPadInst &I) { DELEGATE(FuncletPadInst); }
RetTy visitFreezeInst(FreezeInst &I) { DELEGATE(Instruction); }
- // Handle the special intrinsic instruction classes.
- RetTy visitDbgDeclareInst(DbgDeclareInst &I) { DELEGATE(DbgVariableIntrinsic);}
- RetTy visitDbgValueInst(DbgValueInst &I) { DELEGATE(DbgVariableIntrinsic);}
- RetTy visitDbgVariableIntrinsic(DbgVariableIntrinsic &I)
- { DELEGATE(DbgInfoIntrinsic);}
- RetTy visitDbgLabelInst(DbgLabelInst &I) { DELEGATE(DbgInfoIntrinsic);}
- RetTy visitDbgInfoIntrinsic(DbgInfoIntrinsic &I){ DELEGATE(IntrinsicInst); }
RetTy visitMemSetInst(MemSetInst &I) { DELEGATE(MemIntrinsic); }
RetTy visitMemSetPatternInst(MemSetPatternInst &I) {
DELEGATE(IntrinsicInst);
@@ -286,9 +279,6 @@ class InstVisitor {
if (const Function *F = I.getCalledFunction()) {
switch (F->getIntrinsicID()) {
default: DELEGATE(IntrinsicInst);
- case Intrinsic::dbg_declare: DELEGATE(DbgDeclareInst);
- case Intrinsic::dbg_value: DELEGATE(DbgValueInst);
- case Intrinsic::dbg_label: DELEGATE(DbgLabelInst);
case Intrinsic::memcpy:
case Intrinsic::memcpy_inline:
DELEGATE(MemCpyInst);
diff --git a/llvm/include/llvm/Transforms/Utils/Local.h b/llvm/include/llvm/Transforms/Utils/Local.h
index 55e153f289590..df146458b4e6f 100644
--- a/llvm/include/llvm/Transforms/Utils/Local.h
+++ b/llvm/include/llvm/Transforms/Utils/Local.h
@@ -394,12 +394,9 @@ handleUnreachableTerminator(Instruction *I,
SmallVectorImpl<Value *> &PoisonedValues);
/// Remove all instructions from a basic block other than its terminator
-/// and any present EH pad instructions. Returns a pair where the first element
-/// is the number of instructions (excluding debug info intrinsics) that have
-/// been removed, and the second element is the number of debug info intrinsics
+/// and any present EH pad instructions. Returns the number of instructions
/// that have been removed.
-LLVM_ABI std::pair<unsigned, unsigned>
-removeAllNonTerminatorAndEHPadInstructions(BasicBlock *BB);
+LLVM_ABI unsigned removeAllNonTerminatorAndEHPadInstructions(BasicBlock *BB);
/// Insert an unreachable instruction before the specified
/// instruction, making it and the rest of the code in the block dead.
diff --git a/llvm/lib/Analysis/AliasSetTracker.cpp b/llvm/lib/Analysis/AliasSetTracker.cpp
index 6d1dafbae60b9..1e2f05b60a9a3 100644
--- a/llvm/lib/Analysis/AliasSetTracker.cpp
+++ b/llvm/lib/Analysis/AliasSetTracker.cpp
@@ -343,9 +343,6 @@ void AliasSetTracker::add(AnyMemTransferInst *MTI) {
}
void AliasSetTracker::addUnknown(Instruction *Inst) {
- if (isa<DbgInfoIntrinsic>(Inst))
- return; // Ignore DbgInfo Intrinsics.
-
if (auto *II = dyn_cast<IntrinsicInst>(Inst)) {
// These intrinsics will show up as affecting memory, but they are just
// markers.
diff --git a/llvm/lib/Analysis/CallGraph.cpp b/llvm/lib/Analysis/CallGraph.cpp
index 5d1af52e8ab58..d7695e5cfc0d3 100644
--- a/llvm/lib/Analysis/CallGraph.cpp
+++ b/llvm/lib/Analysis/CallGraph.cpp
@@ -34,8 +34,7 @@ CallGraph::CallGraph(Module &M)
CallsExternalNode(std::make_unique<CallGraphNode>(this, nullptr)) {
// Add every interesting function to the call graph.
for (Function &F : M)
- if (!isDbgInfoIntrinsic(F.getIntrinsicID()))
- addToCallGraph(&F);
+ addToCallGraph(&F);
}
CallGraph::CallGraph(CallGraph &&Arg)
@@ -101,7 +100,7 @@ void CallGraph::populateCallGraphNode(CallGraphNode *Node) {
const Function *Callee = Call->getCalledFunction();
if (!Callee)
Node->addCalledFunction(Call, CallsExternalNode.get());
- else if (!isDbgInfoIntrinsic(Callee->getIntrinsicID()))
+ else
Node->addCalledFunction(Call, getOrInsertFunction(Callee));
// Add reference to callback functions.
diff --git a/llvm/lib/Analysis/DemandedBits.cpp b/llvm/lib/Analysis/DemandedBits.cpp
index d7e2a3fa4fc59..6694d5cc06c8c 100644
--- a/llvm/lib/Analysis/DemandedBits.cpp
+++ b/llvm/lib/Analysis/DemandedBits.cpp
@@ -46,8 +46,7 @@ using namespace llvm::PatternMatch;
#define DEBUG_TYPE "demanded-bits"
static bool isAlwaysLive(Instruction *I) {
- return I->isTerminator() || isa<DbgInfoIntrinsic>(I) || I->isEHPad() ||
- I->mayHaveSideEffects();
+ return I->isTerminator() || I->isEHPad() || I->mayHaveSideEffects();
}
void DemandedBits::determineLiveOperandBits(
diff --git a/llvm/lib/Analysis/Loads.cpp b/llvm/lib/Analysis/Loads.cpp
index 425f3682122cd..71a75b496455a 100644
--- a/llvm/lib/Analysis/Loads.cpp
+++ b/llvm/lib/Analysis/Loads.cpp
@@ -434,7 +434,7 @@ bool llvm::isSafeToLoadUnconditionally(Value *V, Align Alignment, const APInt &S
// If we see a free or a call which may write to memory (i.e. which might do
// a free) the pointer could be marked invalid.
if (isa<CallInst>(BBI) && BBI->mayWriteToMemory() &&
- !isa<LifetimeIntrinsic>(BBI) && !isa<DbgInfoIntrinsic>(BBI))
+ !isa<LifetimeIntrinsic>(BBI))
return false;
Value *AccessedPtr;
diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
index f062189bac6a0..d6f490cb69a52 100644
--- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -188,9 +188,6 @@ MemDepResult MemoryDependenceResults::getCallDependencyFrom(
// Walk backwards through the block, looking for dependencies.
while (ScanIt != BB->begin()) {
Instruction *Inst = &*--ScanIt;
- // Debug intrinsics don't cause dependences and should not affect Limit
- if (isa<DbgInfoIntrinsic>(Inst))
- continue;
// Limit the amount of scanning we do so we don't end up with quadratic
// running time on extreme testcases.
@@ -432,11 +429,6 @@ MemDepResult MemoryDependenceResults::getSimplePointerDependencyFrom(
while (ScanIt != BB->begin()) {
Instruction *Inst = &*--ScanIt;
- if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Inst))
- // Debug intrinsics don't (and can't) cause dependencies.
- if (isa<DbgInfoIntrinsic>(II))
- continue;
-
// Limit the amount of scanning we do so we don't end up with quadratic
// running time on extreme testcases.
--*Limit;
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index d8c1096049dce..3cf3ad6cc95f3 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -7842,8 +7842,6 @@ bool llvm::isGuaranteedToTransferExecutionToSuccessor(
iterator_range<BasicBlock::const_iterator> Range, unsigned ScanLimit) {
assert(ScanLimit && "scan limit must be non-zero");
for (const Instruction &I : Range) {
- if (isa<DbgInfoIntrinsic>(I))
- continue;
if (--ScanLimit == 0)
return false;
if (!isGuaranteedToTransferExecutionToSuccessor(&I))
@@ -8046,8 +8044,6 @@ static bool programUndefinedIfUndefOrPoison(const Value *V,
// well-defined operands.
for (const auto &I : make_range(Begin, End)) {
- if (isa<DbgInfoIntrinsic>(I))
- continue;
if (--ScanLimit == 0)
break;
@@ -8072,8 +8068,6 @@ static bool programUndefinedIfUndefOrPoison(const Value *V,
while (true) {
for (const auto &I : make_range(Begin, End)) {
- if (isa<DbgInfoIntrinsic>(I))
- continue;
if (--ScanLimit == 0)
return false;
if (mustTriggerUB(&I, YieldsPoison))
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp
index 3792b456c836e..43574a54c37dd 100644
--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -896,12 +896,7 @@ BasicBlock *CodeGenPrepare::findDestBlockOfMergeableEmptyBlock(BasicBlock *BB) {
BasicBlock::iterator BBI = BI->getIterator();
if (BBI != BB->begin()) {
--BBI;
- while (isa<DbgInfoIntrinsic>(BBI)) {
- if (BBI == BB->begin())
- break;
- --BBI;
- }
- if (!isa<DbgInfoIntrinsic>(BBI) && !isa<PHINode>(BBI))
+ if (!isa<PHINode>(BBI))
return nullptr;
}
@@ -2981,10 +2976,9 @@ bool CodeGenPrepare::dupRetToEnableTailCallOpts(BasicBlock *BB,
// Make sure there are no instructions between the first instruction
// and return.
BasicBlock::const_iterator BI = BB->getFirstNonPHIIt();
- // Skip over debug and the bitcast.
- while (isa<DbgInfoIntrinsic>(BI) || &*BI == BCI || &*BI == EVI ||
- isa<PseudoProbeInst>(BI) || isLifetimeEndOrBitCastFor(&*BI) ||
- isFakeUse(&*BI))
+ // Skip over pseudo-probes and the bitcast.
+ while (&*BI == BCI || &*BI == EVI || isa<PseudoProbeInst>(BI) ||
+ isLifetimeEndOrBitCastFor(&*BI) || isFakeUse(&*BI))
BI = std::next(BI);
if (&*BI != RetI)
return false;
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index e6a1dc930685c..36be01e837b7b 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -1320,10 +1320,7 @@ void SelectionDAGBuilder::visit(const Instruction &I) {
HandlePHINodesInSuccessorBlocks(I.getParent());
}
- // Increase the SDNodeOrder if dealing with a non-debug instruction.
- if (!isa<DbgInfoIntrinsic>(I))
- ++SDNodeOrder;
-
+ ++SDNodeOrder;
CurInst = &I;
// Set inserted listener only if required.
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index f599637564715..7960eb097fea4 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -1507,7 +1507,6 @@ static bool isFoldedOrDeadInstruction(const Instruction *I,
const FunctionLoweringInfo &FuncInfo) {
return !I->mayWriteToMemory() && // Side-effecting instructions aren't folded.
!I->isTerminator() && // Terminators aren't folded.
- !isa<DbgInfoIntrinsic>(I) && // Debug instructions aren't folded.
!I->isEHPad() && // EH pad instructions aren't folded.
!FuncInfo.isExportedInst(I); // Exported instrs must be computed.
}
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp
index 2a84e7bae0f10..4fb9b5015aa86 100644
--- a/llvm/lib/IR/DebugInfo.cpp
+++ b/llvm/lib/IR/DebugInfo.cpp
@@ -586,11 +586,6 @@ bool llvm::stripDebugInfo(Function &F) {
DenseMap<MDNode *, MDNode *> LoopIDsMap;
for (BasicBlock &BB : F) {
for (Instruction &I : llvm::make_early_inc_range(BB)) {
- if (isa<DbgInfoIntrinsic>(&I)) {
- I.eraseFromParent();
- Changed = true;
- continue;
- }
if (I.getDebugLoc()) {
Changed = true;
I.setDebugLoc(DebugLoc());
diff --git a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp
index 0c0b512e3b6ce..75c7dd944b467 100644
--- a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp
+++ b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp
@@ -369,8 +369,7 @@ Instruction *AArch64StackTagging::collectInitializers(Instruction *StartInst,
unsigned Count = 0;
for (; Count < ClScanLimit && !BI->isTerminator(); ++BI) {
- if (!isa<DbgInfoIntrinsic>(*BI))
- ++Count;
+ ++Count;
if (isNoModRef(AA->getModRefInfo(&*BI, AllocaLoc)))
continue;
diff --git a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
index 9604f252dd3df..c2eb24b482d44 100644
--- a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
@@ -2318,7 +2318,7 @@ bool HexagonLoopIdiomRecognize::coverLoop(Loop *L,
// instructions in it that are not involved in the original set Insts.
for (auto *B : L->blocks()) {
for (auto &In : *B) {
- if (isa<BranchInst>(In) || isa<DbgInfoIntrinsic>(In))
+ if (isa<BranchInst>(In))
continue;
if (!Worklist.count(&In) && In.mayHaveSideEffects())
return false;
diff --git a/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp b/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
index 47bb20f4aa073..d0a5be8b2e23a 100644
--- a/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
+++ b/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
@@ -117,7 +117,7 @@ class PPCBoolRetToInt : public FunctionPass {
// A PHINode is Promotable if:
// 1. Its type is i1 AND
- // 2. All of its uses are ReturnInt, CallInst, PHINode, or DbgInfoIntrinsic
+ // 2. All of its uses are ReturnInt, CallInst, or PHINode
// AND
// 3. All of its operands are Constant or Argument or
// CallInst or PHINode AND
@@ -136,8 +136,7 @@ class PPCBoolRetToInt : public FunctionPass {
for (const PHINode *P : Promotable) {
// Condition 2 and 3
auto IsValidUser = [] (const Value *V) -> bool {
- return isa<ReturnInst>(V) || isa<CallInst>(V) || isa<PHINode>(V) ||
- isa<DbgInfoIntrinsic>(V);
+ return isa<ReturnInst>(V) || isa<CallInst>(V) || isa<PHINode>(V);
};
auto IsValidOperand = [] (const Value *V) -> bool {
return isa<Constant>(V) || isa<Argument>(V) || isa<CallInst>(V) ||
diff --git a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
index f62361d334704..8c156c93ba8d1 100644
--- a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
+++ b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
@@ -719,9 +719,7 @@ static bool foldLoadsRecursive(Value *V, LoadOps &LOps, const DataLayout &DL,
if (Inst.mayWriteToMemory() && isModSet(AA.getModRefInfo(&Inst, Loc)))
return false;
- // Ignore debug info so that's not counted against MaxInstrsToScan.
- // Otherwise debug info could affect codegen.
- if (!isa<DbgInfoIntrinsic>(Inst) && ++NumScanned > MaxInstrsToScan)
+ if (++NumScanned > MaxInstrsToScan)
return false;
}
diff --git a/llvm/lib/Transforms/IPO/IROutliner.cpp b/llvm/lib/Transforms/IPO/IROutliner.cpp
index cb18b55ae2183..2c17863266a97 100644
--- a/llvm/lib/Transforms/IPO/IROutliner.cpp
+++ b/llvm/lib/Transforms/IPO/IROutliner.cpp
@@ -717,8 +717,6 @@ static void moveFunctionData(Function &Old, Function &New,
if (ReturnInst *RI = dyn_cast<ReturnInst>(I))
NewEnds.insert(std::make_pair(RI->getReturnValue(), &CurrBB));
- std::vector<Instruction *> DebugInsts;
-
for (Instruction &Val : CurrBB) {
// Since debug-info originates from many different locations in the
// program, it will cause incorrect reporting from a debugger if we keep
@@ -749,21 +747,12 @@ static void moveFunctionData(Function &Old, Function &New,
// From this point we are only handling call instructions.
CallInst *CI = cast<CallInst>(&Val);
- // Collect debug intrinsics for later removal.
- if (isa<DbgInfoIntrinsic>(CI)) {
- DebugInsts.push_back(&Val);
- continue;
- }
-
// Edit the scope of called functions inside of outlined functions.
if (DISubprogram *SP = New.getSubprogram()) {
DILocation *DI = DILocation::get(New.getContext(), 0, 0, SP);
Val.setDebugLoc(DI);
}
}
-
- for (Instruction *I : DebugInsts)
- I->eraseFromParent();
}
}
diff --git a/llvm/lib/Transforms/IPO/SampleProfileProbe.cpp b/llvm/lib/Transforms/IPO/SampleProfileProbe.cpp
index dda3d5a788157..7fd7d4d4f750b 100644
--- a/llvm/lib/Transforms/IPO/SampleProfileProbe.cpp
+++ b/llvm/lib/Transforms/IPO/SampleProfileProbe.cpp
@@ -385,8 +385,7 @@ void SampleProfileProber::instrumentOneFunc(Function &F, TargetMachine *TM) {
// line number. Real instructions generated by optimizations may not come
// with a line number either.
auto HasValidDbgLine = [](Instruction *J) {
- return !isa<PHINode>(J) && !isa<DbgInfoIntrinsic>(J) &&
- !J->isLifetimeStartOrEnd() && J->getDebugLoc();
+ return !isa<PHINode>(J) && !J->isLifetimeStartOrEnd() && J->getDebugLoc();
};
Instruction *J = &*BB->getFirstInsertionPt();
diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
index e261807bbc035..50c9498b5d605 100644
--- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -4758,11 +4758,7 @@ bool InstCombinerImpl::freezeOtherUses(FreezeInst &FI) {
MoveBefore = *MoveBeforeOpt;
}
- // Don't move to the position of a debug intrinsic.
- if (isa<DbgInfoIntrinsic>(MoveBefore))
- MoveBefore = MoveBefore->getNextNonDebugInstruction()->getIterator();
- // Re-point iterator to come after any debug-info records, if we're
- // running in "RemoveDIs" mode
+ // Re-point iterator to come after any debug-info records.
MoveBefore.setHeadBit(false);
bool Changed = false;
@@ -5554,11 +5550,9 @@ bool InstCombinerImpl::prepareWorklist(Function &F) {
continue;
unsigned NumDeadInstInBB;
- unsigned NumDeadDbgInstInBB;
- std::tie(NumDeadInstInBB, NumDeadDbgInstInBB) =
- removeAllNonTerminatorAndEHPadInstructions(&BB);
+ NumDeadInstInBB = removeAllNonTerminatorAndEHPadInstructions(&BB);
- MadeIRChange |= NumDeadInstInBB + NumDeadDbgInstInBB > 0;
+ MadeIRChange |= NumDeadInstInBB;
NumDeadInst += NumDeadInstInBB;
}
diff --git a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
index 9351a42581ba0..3dfb36f4f1815 100644
--- a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
+++ b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
@@ -583,10 +583,6 @@ static bool functionHasLines(const Function &F, unsigned &EndLine) {
EndLine = 0;
for (const auto &BB : F) {
for (const auto &I : BB) {
- // Debug intrinsic locations correspond to the location of the
- // declaration, not necessarily any statements or expressions.
- if (isa<DbgInfoIntrinsic>(&I)) continue;
-
const DebugLoc &Loc = I.getDebugLoc();
if (!Loc)
continue;
@@ -874,10 +870,6 @@ bool GCOVProfiler::emitProfileNotes(
}
for (const auto &I : BB) {
- // Debug intrinsic locations correspond to the location of the
- // declaration, not necessarily any statements or expressions.
- if (isa<DbgInfoIntrinsic>(&I)) continue...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/144389
More information about the llvm-commits
mailing list