[Lldb-commits] [lldb] [llvm] [IR] Rename BasicBlock::getFirstNonPHIOrDbg* (NFC) (PR #232604)
Kazu Hirata via lldb-commits
lldb-commits at lists.llvm.org
Thu Oct 15 23:04:34 PDT 2026
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/232604
This patch renames the functions in BasicBlock as follows because they
no longer check for debug intrinsics:
- getFirstNonPHIOrDbg -> getFirstNonPHIOrPseudoProbe
- getFirstNonPHIOrDbgOrLifetime -> getFirstNonPHIOrLifetime
- getFirstNonPHIOrDbgOrAlloca -> getFirstNonPHIOrAlloca
This patch also drops the SkipPseudoOp parameter from
getFirstNonPHIOrPseudoProbe and getFirstNonPHIOrLifetime because every
caller uses the default value of true.
Note that all three functions still return iterators with the head bit
unset so that insertions at the returned position are placed after any
DbgRecords attached to that instruction.
Assisted-by: Antigravity
>From 313dd333cb17cc4770de3bc3896d1cb64da92864 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Thu, 15 Oct 2026 00:51:07 -0700
Subject: [PATCH] [IR] Rename BasicBlock::getFirstNonPHIOrDbg* (NFC)
This patch renames the functions in BasicBlock as follows because they
no longer check for debug intrinsics:
- getFirstNonPHIOrDbg -> getFirstNonPHIOrPseudoProbe
- getFirstNonPHIOrDbgOrLifetime -> getFirstNonPHIOrLifetime
- getFirstNonPHIOrDbgOrAlloca -> getFirstNonPHIOrAlloca
This patch also drops the SkipPseudoOp parameter from
getFirstNonPHIOrPseudoProbe and getFirstNonPHIOrLifetime because every
caller uses the default value of true.
Note that all three functions still return iterators with the head bit
unset so that insertions at the returned position are placed after any
DbgRecords attached to that instruction.
Assisted-by: Antigravity
---
.../ExpressionParser/Clang/IRForTarget.cpp | 8 +++--
llvm/include/llvm/IR/BasicBlock.h | 33 ++++++++-----------
llvm/include/llvm/IR/IRBuilder.h | 2 +-
llvm/include/llvm/IR/Instructions.h | 3 +-
llvm/lib/Analysis/MustExecute.cpp | 2 +-
llvm/lib/CodeGen/CodeGenPrepare.cpp | 2 +-
llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 2 +-
.../SelectionDAG/SelectionDAGBuilder.cpp | 2 +-
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | 8 ++---
llvm/lib/IR/BasicBlock.cpp | 21 +++---------
.../AArch64/AArch64TargetTransformInfo.cpp | 2 +-
.../AMDGPU/AMDGPULowerModuleLDSPass.cpp | 2 +-
llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp | 4 +--
.../Target/AMDGPU/SIAnnotateControlFlow.cpp | 4 +--
llvm/lib/Target/NVPTX/NVPTXGenericToNVVM.cpp | 2 +-
llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp | 6 ++--
llvm/lib/Transforms/Coroutines/CoroFrame.cpp | 5 +--
llvm/lib/Transforms/Coroutines/CoroSplit.cpp | 4 +--
llvm/lib/Transforms/IPO/Instrumentor.cpp | 4 +--
llvm/lib/Transforms/IPO/OpenMPOpt.cpp | 2 +-
llvm/lib/Transforms/IPO/SCCP.cpp | 7 ++--
llvm/lib/Transforms/IPO/SampleProfile.cpp | 2 +-
.../InstCombineLoadStoreAlloca.cpp | 2 +-
.../InstCombine/InstructionCombining.cpp | 3 +-
.../Transforms/Instrumentation/CopyProf.cpp | 3 +-
.../Instrumentation/PGOInstrumentation.cpp | 8 ++---
.../Instrumentation/SanitizerCoverage.cpp | 2 +-
.../Transforms/Scalar/CallSiteSplitting.cpp | 4 +--
llvm/lib/Transforms/Scalar/GuardWidening.cpp | 2 +-
llvm/lib/Transforms/Scalar/JumpThreading.cpp | 2 +-
llvm/lib/Transforms/Scalar/LoopFuse.cpp | 4 +--
.../Transforms/Scalar/LoopIdiomRecognize.cpp | 2 +-
llvm/lib/Transforms/Scalar/Reassociate.cpp | 2 +-
llvm/lib/Transforms/Scalar/SROA.cpp | 2 +-
.../Transforms/Scalar/SimpleLoopUnswitch.cpp | 2 +-
.../Scalar/TailRecursionElimination.cpp | 2 +-
llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | 2 +-
.../Transforms/Utils/BreakCriticalEdges.cpp | 2 +-
llvm/lib/Transforms/Utils/CodeMoverUtils.cpp | 2 +-
llvm/lib/Transforms/Utils/IRNormalizer.cpp | 15 ++++-----
llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 9 ++---
.../Transforms/Vectorize/SLPVectorizer.cpp | 10 +++---
.../Frontend/OpenMPIRBuilderTest.cpp | 8 ++---
llvm/unittests/IR/DebugInfoTest.cpp | 6 ++--
llvm/unittests/Transforms/Utils/LocalTest.cpp | 2 +-
45 files changed, 104 insertions(+), 119 deletions(-)
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp b/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp
index f9ddce8e1be033..e463f124f71357 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp
@@ -68,7 +68,7 @@ static llvm::Value *FindEntryInstruction(llvm::Function *function) {
if (function->empty())
return nullptr;
- return &*function->getEntryBlock().getFirstNonPHIOrDbg();
+ return &*function->getEntryBlock().getFirstNonPHIOrPseudoProbe();
}
IRForTarget::IRForTarget(lldb_private::ClangExpressionDeclMap *decl_map,
@@ -368,7 +368,8 @@ bool IRForTarget::CreateResultVariable(llvm::Function &llvm_function) {
// there's nothing to put into its equivalent persistent variable.
BasicBlock &entry_block(llvm_function.getEntryBlock());
- Instruction *first_entry_instruction(&*entry_block.getFirstNonPHIOrDbg());
+ Instruction *first_entry_instruction(
+ &*entry_block.getFirstNonPHIOrPseudoProbe());
if (!first_entry_instruction)
return false;
@@ -1545,7 +1546,8 @@ bool IRForTarget::ReplaceVariables(Function &llvm_function) {
LLDB_LOG(log, "Arg: \"{0}\"", PrintValue(argument));
BasicBlock &entry_block(llvm_function.getEntryBlock());
- Instruction *FirstEntryInstruction(&*entry_block.getFirstNonPHIOrDbg());
+ Instruction *FirstEntryInstruction(
+ &*entry_block.getFirstNonPHIOrPseudoProbe());
if (!FirstEntryInstruction) {
m_error_stream.Printf("Internal error [IRForTarget]: Couldn't find the "
diff --git a/llvm/include/llvm/IR/BasicBlock.h b/llvm/include/llvm/IR/BasicBlock.h
index 22b658046a482e..537fac311bad82 100644
--- a/llvm/include/llvm/IR/BasicBlock.h
+++ b/llvm/include/llvm/IR/BasicBlock.h
@@ -297,26 +297,21 @@ class BasicBlock final : public Value, // Basic blocks are data objects also
return It;
}
- /// Returns a pointer to the first instruction in this block that is not a
- /// PHINode or a debug intrinsic, or any pseudo operation if \c SkipPseudoOp
- /// is true.
- LLVM_ABI InstListType::const_iterator
- getFirstNonPHIOrDbg(bool SkipPseudoOp = true) const;
- InstListType::iterator getFirstNonPHIOrDbg(bool SkipPseudoOp = true) {
+ /// Returns an iterator to the first instruction in this block that is not a
+ /// PHINode or a pseudo operation.
+ LLVM_ABI InstListType::const_iterator getFirstNonPHIOrPseudoProbe() const;
+ InstListType::iterator getFirstNonPHIOrPseudoProbe() {
return static_cast<const BasicBlock *>(this)
- ->getFirstNonPHIOrDbg(SkipPseudoOp)
+ ->getFirstNonPHIOrPseudoProbe()
.getNonConst();
}
- /// Returns a pointer to the first instruction in this block that is not a
- /// PHINode, a debug intrinsic, or a lifetime intrinsic, or any pseudo
- /// operation if \c SkipPseudoOp is true.
- LLVM_ABI InstListType::const_iterator
- getFirstNonPHIOrDbgOrLifetime(bool SkipPseudoOp = true) const;
- InstListType::iterator
- getFirstNonPHIOrDbgOrLifetime(bool SkipPseudoOp = true) {
+ /// Returns an iterator to the first instruction in this block that is not a
+ /// PHINode, a lifetime intrinsic, or a pseudo operation.
+ LLVM_ABI InstListType::const_iterator getFirstNonPHIOrLifetime() const;
+ InstListType::iterator getFirstNonPHIOrLifetime() {
return static_cast<const BasicBlock *>(this)
- ->getFirstNonPHIOrDbgOrLifetime(SkipPseudoOp)
+ ->getFirstNonPHIOrLifetime()
.getNonConst();
}
@@ -343,11 +338,11 @@ class BasicBlock final : public Value, // Basic blocks are data objects also
}
/// Returns an iterator to the first instruction in this block that is
- /// not a PHINode, a debug intrinsic, a static alloca or any pseudo operation.
- LLVM_ABI const_iterator getFirstNonPHIOrDbgOrAlloca() const;
- iterator getFirstNonPHIOrDbgOrAlloca() {
+ /// not a PHINode, a static alloca, or any pseudo operation.
+ LLVM_ABI const_iterator getFirstNonPHIOrAlloca() const;
+ iterator getFirstNonPHIOrAlloca() {
return static_cast<const BasicBlock *>(this)
- ->getFirstNonPHIOrDbgOrAlloca()
+ ->getFirstNonPHIOrAlloca()
.getNonConst();
}
diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h
index 442cef296754ad..2613998413a3b0 100644
--- a/llvm/include/llvm/IR/IRBuilder.h
+++ b/llvm/include/llvm/IR/IRBuilder.h
@@ -231,7 +231,7 @@ class IRBuilderBase {
/// instructions that are at the start.
void SetInsertPointPastAllocas(Function *F) {
BB = &F->getEntryBlock();
- InsertPt = BB->getFirstNonPHIOrDbgOrAlloca();
+ InsertPt = BB->getFirstNonPHIOrAlloca();
}
/// Set location information used by debugging information.
diff --git a/llvm/include/llvm/IR/Instructions.h b/llvm/include/llvm/IR/Instructions.h
index 5d56e130eec5a7..39c5b786e7967d 100644
--- a/llvm/include/llvm/IR/Instructions.h
+++ b/llvm/include/llvm/IR/Instructions.h
@@ -3506,7 +3506,8 @@ class SwitchInst : public Instruction {
/// Returns true if the default branch must result in immediate undefined
/// behavior, false otherwise.
bool defaultDestUnreachable() const {
- return isa<UnreachableInst>(getDefaultDest()->getFirstNonPHIOrDbg());
+ return isa<UnreachableInst>(
+ getDefaultDest()->getFirstNonPHIOrPseudoProbe());
}
void setDefaultDest(BasicBlock *DefaultCase) {
diff --git a/llvm/lib/Analysis/MustExecute.cpp b/llvm/lib/Analysis/MustExecute.cpp
index 0aade401bf9048..82452e892886fc 100644
--- a/llvm/lib/Analysis/MustExecute.cpp
+++ b/llvm/lib/Analysis/MustExecute.cpp
@@ -294,7 +294,7 @@ bool SimpleLoopSafetyInfo::isGuaranteedToExecute(
// exit. At the moment, we use a (cheap) hack for the common case where
// the instruction of interest is the first one in the block.
return !HeaderMayThrow ||
- &*Inst.getParent()->getFirstNonPHIOrDbg() == &Inst;
+ &*Inst.getParent()->getFirstNonPHIOrPseudoProbe() == &Inst;
// If there is a path from header to exit or latch that doesn't lead to our
// instruction's block, return false.
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp
index bc2099ec13c4d4..2e475e9efd046e 100644
--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -868,7 +868,7 @@ bool CodeGenPrepare::isMergingEmptyBlockProfitable(BasicBlock *BB,
isa<IndirectBrInst>(Pred->getTerminator())))
return true;
- if (BB->getTerminator() != &*BB->getFirstNonPHIOrDbg())
+ if (BB->getTerminator() != &*BB->getFirstNonPHIOrPseudoProbe())
return true;
// We use a simple cost heuristic which determine skipping merging is
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index ebf2eb79a64528..3315dfef0aa1f4 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -2064,7 +2064,7 @@ bool IRTranslatorImpl::lowerSwitchWorkItem(SwitchCG::SwitchWorkListItem W,
// For the last cluster, fall through to the default destination.
Fallthrough = DefaultMBB;
FallthroughUnreachable = isa<UnreachableInst>(
- DefaultMBB->getBasicBlock()->getFirstNonPHIOrDbg());
+ DefaultMBB->getBasicBlock()->getFirstNonPHIOrPseudoProbe());
} else {
Fallthrough = CurMF->CreateMachineBasicBlock(CurMBB->getBasicBlock());
CurMF->insert(BBI, Fallthrough);
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index b595de3734bb9f..7ed3ed4ae9b8e0 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -12752,7 +12752,7 @@ void SelectionDAGBuilder::lowerWorkItem(SwitchWorkListItem W, Value *Cond,
// For the last cluster, fall through to the default destination.
Fallthrough = DefaultMBB;
FallthroughUnreachable = isa<UnreachableInst>(
- DefaultMBB->getBasicBlock()->getFirstNonPHIOrDbg());
+ DefaultMBB->getBasicBlock()->getFirstNonPHIOrPseudoProbe());
} else {
Fallthrough = CurMF->CreateMachineBasicBlock(CurMBB->getBasicBlock());
CurMF->insert(BBI, Fallthrough);
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index 732b6083628796..af2d102f568347 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -6135,8 +6135,7 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::applyStaticWorkshareLoop(
getOrCreateRuntimeFunction(M, omp::OMPRTL___kmpc_for_static_fini);
// Allocate space for computed loop bounds as expected by the "init" function.
- Builder.SetInsertPoint(
- AllocaIP.getNodeParent()->getFirstNonPHIOrDbgOrAlloca());
+ Builder.SetInsertPoint(AllocaIP.getNodeParent()->getFirstNonPHIOrAlloca());
Type *I32Type = Type::getInt32Ty(M.getContext());
Value *PLastIter = Builder.CreateAlloca(I32Type, nullptr, "p.lastiter");
@@ -6890,8 +6889,7 @@ OpenMPIRBuilder::applyDynamicWorkshareLoop(DebugLoc DL, CanonicalLoopInfo *CLI,
FunctionCallee DynamicNext = getKmpcForDynamicNextForType(IVTy, M, *this);
// Allocate space for computed loop bounds as expected by the "init" function.
- Builder.SetInsertPoint(
- AllocaIP.getNodeParent()->getFirstNonPHIOrDbgOrAlloca());
+ Builder.SetInsertPoint(AllocaIP.getNodeParent()->getFirstNonPHIOrAlloca());
Type *I32Type = Type::getInt32Ty(M.getContext());
Value *PLastIter = Builder.CreateAlloca(I32Type, nullptr, "p.lastiter");
Value *PLowerBound = Builder.CreateAlloca(IVTy, nullptr, "p.lowerbound");
@@ -9400,7 +9398,7 @@ static Expected<Function *> createOutlinedFunction(
Builder.SetInsertPoint(EntryBB->getFirstNonPHIIt());
auto AllocaIP = Builder.saveIP();
- Builder.SetInsertPoint(UserCodeEntryBB->getFirstNonPHIOrDbg());
+ Builder.SetInsertPoint(UserCodeEntryBB->getFirstNonPHIOrPseudoProbe());
// Do not include the artificial dyn_ptr argument.
const auto &ArgRange = make_range(Func->arg_begin(), Func->arg_end() - 1);
diff --git a/llvm/lib/IR/BasicBlock.cpp b/llvm/lib/IR/BasicBlock.cpp
index 921070c07a75c8..10257a387ae861 100644
--- a/llvm/lib/IR/BasicBlock.cpp
+++ b/llvm/lib/IR/BasicBlock.cpp
@@ -302,13 +302,9 @@ BasicBlock::const_iterator BasicBlock::getFirstNonPHIIt() const {
return end();
}
-BasicBlock::const_iterator
-BasicBlock::getFirstNonPHIOrDbg(bool SkipPseudoOp) const {
+BasicBlock::const_iterator BasicBlock::getFirstNonPHIOrPseudoProbe() const {
for (const Instruction &I : *this) {
- if (isa<PHINode>(I))
- continue;
-
- if (SkipPseudoOp && isa<PseudoProbeInst>(I))
+ if (isa<PHINode, PseudoProbeInst>(I))
continue;
BasicBlock::const_iterator It = I.getIterator();
@@ -320,16 +316,9 @@ BasicBlock::getFirstNonPHIOrDbg(bool SkipPseudoOp) const {
return end();
}
-BasicBlock::const_iterator
-BasicBlock::getFirstNonPHIOrDbgOrLifetime(bool SkipPseudoOp) const {
+BasicBlock::const_iterator BasicBlock::getFirstNonPHIOrLifetime() const {
for (const Instruction &I : *this) {
- if (isa<PHINode>(I))
- continue;
-
- if (I.isLifetimeStartOrEnd())
- continue;
-
- if (SkipPseudoOp && isa<PseudoProbeInst>(I))
+ if (isa<PHINode, PseudoProbeInst>(I) || I.isLifetimeStartOrEnd())
continue;
BasicBlock::const_iterator It = I.getIterator();
@@ -355,7 +344,7 @@ BasicBlock::const_iterator BasicBlock::getFirstInsertionPt() const {
return InsertPt;
}
-BasicBlock::const_iterator BasicBlock::getFirstNonPHIOrDbgOrAlloca() const {
+BasicBlock::const_iterator BasicBlock::getFirstNonPHIOrAlloca() const {
const_iterator InsertPt = getFirstNonPHIIt();
if (InsertPt == end())
return end();
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
index 14e8d3b61c2dcd..edf58bafb9667b 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
@@ -3501,7 +3501,7 @@ instCombineDMB(InstCombiner &IC, IntrinsicInst &II,
NI = NI->getNextNode();
if (!NI) {
if (auto *SuccBB = NIBB->getUniqueSuccessor())
- NI = &*SuccBB->getFirstNonPHIOrDbgOrLifetime();
+ NI = &*SuccBB->getFirstNonPHIOrLifetime();
else
break;
}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
index 2313a955d52b90..2dfc8f11233baa 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
@@ -517,7 +517,7 @@ class AMDGPULowerModuleLDS {
// block to spare deduplicating it later.
auto [It, Inserted] = tableKernelIndexCache.try_emplace(F);
if (Inserted) {
- auto InsertAt = F->getEntryBlock().getFirstNonPHIOrDbgOrAlloca();
+ auto InsertAt = F->getEntryBlock().getFirstNonPHIOrAlloca();
IRBuilder<> Builder(&*InsertAt);
It->second = Builder.CreateIntrinsic(Intrinsic::amdgcn_lds_kernel_id, {});
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
index 65e808fba74681..d835ffbd56d17f 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
@@ -860,7 +860,7 @@ void AMDGPUSwLowerLDS::lowerKernelLDSAccesses(Function *Func,
// block (WIdBlock) so they remain static allocas. Splice the leading cluster
// in bulk, then move any stragglers that are interleaved with other
// instructions.
- auto SplitIt = PrevEntryBlock->getFirstNonPHIOrDbgOrAlloca();
+ auto SplitIt = PrevEntryBlock->getFirstNonPHIOrAlloca();
WIdBlock->splice(WIdBlock->end(), PrevEntryBlock, PrevEntryBlock->begin(),
SplitIt);
for (Instruction &I : make_early_inc_range(*PrevEntryBlock))
@@ -1141,7 +1141,7 @@ void AMDGPUSwLowerLDS::lowerNonKernelLDSAccesses(
// Base table and offset from offset table.
LLVM_DEBUG(dbgs() << "Sw LDS lowering, lower non-kernel access for : "
<< Func->getName());
- auto InsertAt = Func->getEntryBlock().getFirstNonPHIOrDbgOrAlloca();
+ auto InsertAt = Func->getEntryBlock().getFirstNonPHIOrAlloca();
IRB.SetInsertPoint(InsertAt);
// Get LDS memory instructions.
diff --git a/llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp b/llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
index 2b2f9c0cd5aab5..d8ceb66438b3b4 100644
--- a/llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
+++ b/llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
@@ -234,7 +234,7 @@ Value *SIAnnotateControlFlow::handleLoopCondition(Value *Cond, PHINode *Broken,
} else if (L->contains(Inst)) {
Insert = Term;
} else {
- Insert = &*L->getHeader()->getFirstNonPHIOrDbgOrLifetime();
+ Insert = &*L->getHeader()->getFirstNonPHIOrLifetime();
}
return CreateBreak(Insert);
@@ -249,7 +249,7 @@ Value *SIAnnotateControlFlow::handleLoopCondition(Value *Cond, PHINode *Broken,
}
if (isa<Argument>(Cond)) {
- Instruction *Insert = &*L->getHeader()->getFirstNonPHIOrDbgOrLifetime();
+ Instruction *Insert = &*L->getHeader()->getFirstNonPHIOrLifetime();
return CreateBreak(Insert);
}
diff --git a/llvm/lib/Target/NVPTX/NVPTXGenericToNVVM.cpp b/llvm/lib/Target/NVPTX/NVPTXGenericToNVVM.cpp
index 4def36476dbc0b..b7b656101d0c0a 100644
--- a/llvm/lib/Target/NVPTX/NVPTXGenericToNVVM.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXGenericToNVVM.cpp
@@ -82,7 +82,7 @@ bool GenericToNVVM::runOnModule(Module &M) {
if (F.isDeclaration()) {
continue;
}
- IRBuilder<> Builder(&*F.getEntryBlock().getFirstNonPHIOrDbg());
+ IRBuilder<> Builder(&*F.getEntryBlock().getFirstNonPHIOrPseudoProbe());
for (BasicBlock &BB : F) {
for (Instruction &II : BB) {
for (unsigned i = 0, e = II.getNumOperands(); i < e; ++i) {
diff --git a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
index b8d1011ab8f983..548edf76b98482 100644
--- a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
@@ -474,7 +474,7 @@ static bool isSpvAggrPlaceholder(const Value *V) {
static void setInsertPointSkippingPhis(IRBuilder<> &B, Instruction *I) {
if (isa<PHINode>(I))
- B.SetInsertPoint(I->getParent()->getFirstNonPHIOrDbgOrAlloca());
+ B.SetInsertPoint(I->getParent()->getFirstNonPHIOrAlloca());
else
B.SetInsertPoint(I);
}
@@ -626,7 +626,7 @@ CallInst *SPIRVEmitIntrinsicsImpl::buildSpvPtrcast(Function *F, Value *Op,
B.SetInsertPointPastAllocas(OpA->getParent());
B.SetCurrentDebugLocation(DebugLoc());
} else {
- B.SetInsertPoint(F->getEntryBlock().getFirstNonPHIOrDbgOrAlloca());
+ B.SetInsertPoint(F->getEntryBlock().getFirstNonPHIOrAlloca());
}
Type *OpTy = Op->getType();
SmallVector<Type *, 2> Types = {OpTy, OpTy};
@@ -3661,7 +3661,7 @@ void SPIRVEmitIntrinsicsImpl::applyDemangledPtrArgTypes(IRBuilder<> &B) {
B.SetInsertPoint(CI->getParent()
->getParent()
->getEntryBlock()
- .getFirstNonPHIOrDbgOrAlloca());
+ .getFirstNonPHIOrAlloca());
GR->buildAssignPtr(B, ElemTy, Param);
}
CallInst *Ref = dyn_cast<CallInst>(Param);
diff --git a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
index 7b10b8f66f1434..2c76bdb5917aa7 100644
--- a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
@@ -1637,7 +1637,8 @@ static Value *emitSetAndGetSwiftErrorValueAround(Instruction *Call,
Builder.SetInsertPoint(Call->getNextNode());
} else {
auto Invoke = cast<InvokeInst>(Call);
- Builder.SetInsertPoint(Invoke->getNormalDest()->getFirstNonPHIOrDbg());
+ Builder.SetInsertPoint(
+ Invoke->getNormalDest()->getFirstNonPHIOrPseudoProbe());
}
// Get the current swifterror value and store it to the alloca.
@@ -1678,7 +1679,7 @@ static void eliminateSwiftErrorAlloca(Function &F, AllocaInst *Alloca,
static void eliminateSwiftErrorArgument(Function &F, Argument &Arg,
coro::Shape &Shape,
SmallVectorImpl<AllocaInst*> &AllocasToPromote) {
- IRBuilder<> Builder(F.getEntryBlock().getFirstNonPHIOrDbg());
+ IRBuilder<> Builder(F.getEntryBlock().getFirstNonPHIOrPseudoProbe());
auto ArgTy = cast<PointerType>(Arg.getType());
auto ValueTy = PointerType::getUnqual(F.getContext());
diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
index 88031411e601a5..68815a4c1a4951 100644
--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
@@ -644,7 +644,7 @@ static void replaceSwiftErrorOps(Function &F, coro::Shape &Shape,
}
// Create a swifterror alloca.
- IRBuilder<> Builder(F.getEntryBlock().getFirstNonPHIOrDbg());
+ IRBuilder<> Builder(F.getEntryBlock().getFirstNonPHIOrPseudoProbe());
auto Alloca = Builder.CreateAlloca(ValueTy);
Alloca->setSwiftError(true);
@@ -809,7 +809,7 @@ static DebugLoc getFirstNonZeroLocAfterSuspend(Instruction *ActiveSuspend) {
auto *Branch = dyn_cast_or_null<UncondBrInst>(Successor);
if (!Branch)
break;
- Successor = Branch->getSuccessor()->getFirstNonPHIOrDbg();
+ Successor = Branch->getSuccessor()->getFirstNonPHIOrPseudoProbe();
}
BasicBlock *PBB = Successor->getParent();
diff --git a/llvm/lib/Transforms/IPO/Instrumentor.cpp b/llvm/lib/Transforms/IPO/Instrumentor.cpp
index 18a3c86dcfe718..12f2d4e3b13e95 100644
--- a/llvm/lib/Transforms/IPO/Instrumentor.cpp
+++ b/llvm/lib/Transforms/IPO/Instrumentor.cpp
@@ -397,7 +397,7 @@ bool InstrumentorImpl::instrumentFunction(Function &Fn) {
++IIRB.Epoch;
IIRB.IRB.SetInsertPoint(
- cast<Function>(FPtr)->getEntryBlock().getFirstNonPHIOrDbgOrAlloca());
+ cast<Function>(FPtr)->getEntryBlock().getFirstNonPHIOrAlloca());
ensureDbgLoc(IIRB.IRB);
IO->instrument(FPtr, Changed, IConf, IIRB, ICaches);
IIRB.returnAllocas();
@@ -1656,7 +1656,7 @@ Value *GlobalVarIO::setAddress(Value &V, Value &NewV,
if (!Reload) {
Reload = new LoadInst(
GV.getType(), ShadowGV, GV.getName() + ".shadow_load",
- UserI->getFunction()->getEntryBlock().getFirstNonPHIOrDbgOrAlloca());
+ UserI->getFunction()->getEntryBlock().getFirstNonPHIOrAlloca());
IIRB.NewInsts.insert({Reload, IIRB.Epoch});
}
Worklist.push_back({UserI, &UserU});
diff --git a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
index 119b32aee2e8ef..e9c746f12388c5 100644
--- a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -1838,7 +1838,7 @@ struct OpenMPOpt {
auto &IRBuilder = OMPInfoCache.OMPBuilder;
Function *F = RuntimeCall.getCaller();
BasicBlock &Entry = F->getEntryBlock();
- IRBuilder.Builder.SetInsertPoint(Entry.getFirstNonPHIOrDbgOrAlloca());
+ IRBuilder.Builder.SetInsertPoint(Entry.getFirstNonPHIOrAlloca());
Value *Handle = IRBuilder.Builder.CreateAlloca(
IRBuilder.AsyncInfo, /*ArraySize=*/nullptr, "handle");
Handle =
diff --git a/llvm/lib/Transforms/IPO/SCCP.cpp b/llvm/lib/Transforms/IPO/SCCP.cpp
index ed44a630e43860..adbd63651a4fc9 100644
--- a/llvm/lib/Transforms/IPO/SCCP.cpp
+++ b/llvm/lib/Transforms/IPO/SCCP.cpp
@@ -242,12 +242,13 @@ static bool runIPSCCP(
// nodes in executable blocks we found values for. The function's entry
// block is not part of BlocksToErase, so we have to handle it separately.
for (BasicBlock *BB : BlocksToErase) {
- NumInstRemoved += changeToUnreachable(&*BB->getFirstNonPHIOrDbg(),
+ NumInstRemoved += changeToUnreachable(&*BB->getFirstNonPHIOrPseudoProbe(),
/*PreserveLCSSA=*/false, &DTU);
}
if (!Solver.isBlockExecutable(&F.front()))
- NumInstRemoved += changeToUnreachable(&*F.front().getFirstNonPHIOrDbg(),
- /*PreserveLCSSA=*/false, &DTU);
+ NumInstRemoved +=
+ changeToUnreachable(&*F.front().getFirstNonPHIOrPseudoProbe(),
+ /*PreserveLCSSA=*/false, &DTU);
BasicBlock *NewUnreachableBB = nullptr;
for (BasicBlock &BB : F)
diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp
index 7bef602c3e2c39..757c8cc6633058 100644
--- a/llvm/lib/Transforms/IPO/SampleProfile.cpp
+++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp
@@ -1729,7 +1729,7 @@ void SampleProfileLoader::generateMDProfMetadata(Function &F) {
if (Weight != 0) {
if (Weight > MaxWeight) {
MaxWeight = Weight;
- MaxDestInst = &*Succ->getFirstNonPHIOrDbgOrLifetime();
+ MaxDestInst = &*Succ->getFirstNonPHIOrLifetime();
}
}
}
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp b/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
index c6980bd95445fd..420c507353293f 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
@@ -520,7 +520,7 @@ Instruction *InstCombinerImpl::visitAllocaInst(AllocaInst &AI) {
// Get the first instruction in the entry block.
BasicBlock &EntryBlock = AI.getParent()->getParent()->getEntryBlock();
- BasicBlock::iterator FirstInst = EntryBlock.getFirstNonPHIOrDbg();
+ BasicBlock::iterator FirstInst = EntryBlock.getFirstNonPHIOrPseudoProbe();
if (&*FirstInst != &AI) {
// If the entry block doesn't start with a zero-size alloca then move
// this one to the start of the entry block. There is no problem with
diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
index 103970b171b07d..c9c7fc766004a3 100644
--- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -5376,8 +5376,7 @@ bool InstCombinerImpl::freezeOtherUses(FreezeInst &FI) {
// replacement below is still necessary.
BasicBlock::iterator MoveBefore;
if (isa<Argument>(Op)) {
- MoveBefore =
- FI.getFunction()->getEntryBlock().getFirstNonPHIOrDbgOrAlloca();
+ MoveBefore = FI.getFunction()->getEntryBlock().getFirstNonPHIOrAlloca();
} else {
auto MoveBeforeOpt = cast<Instruction>(Op)->getInsertionPointAfterDef();
if (!MoveBeforeOpt)
diff --git a/llvm/lib/Transforms/Instrumentation/CopyProf.cpp b/llvm/lib/Transforms/Instrumentation/CopyProf.cpp
index 840f9c0b7c8b17..399ef0e58fad00 100644
--- a/llvm/lib/Transforms/Instrumentation/CopyProf.cpp
+++ b/llvm/lib/Transforms/Instrumentation/CopyProf.cpp
@@ -242,8 +242,7 @@ void CopyProf::insertCallback(Function &F, size_t ObjSize, unsigned NumArgs,
};
InsertCallback(
- F,
- InstrumentationIRBuilder{F.getEntryBlock().getFirstNonPHIOrDbgOrAlloca()},
+ F, InstrumentationIRBuilder{F.getEntryBlock().getFirstNonPHIOrAlloca()},
EntryCallback);
for (BasicBlock &BB : F) {
Instruction *Term = BB.getTerminator();
diff --git a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
index a3c0c1687ffdc6..8330a1523e6b5d 100644
--- a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
+++ b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
@@ -694,7 +694,7 @@ BasicBlock *FuncPGOInstrumentation<Edge, BBInfo>::getInstrBB(Edge *E) {
auto canInstrument = [](BasicBlock *BB) -> BasicBlock * {
// There are basic blocks (such as catchswitch) cannot be instrumented.
// If the returned first insertion point is the end of BB, skip this BB.
- if (BB->getFirstNonPHIOrDbgOrAlloca() == BB->end())
+ if (BB->getFirstNonPHIOrAlloca() == BB->end())
return nullptr;
return BB;
};
@@ -791,7 +791,7 @@ void FunctionInstrumenter::instrument() {
Name, PointerType::get(M.getContext(), 0));
if (Opts.pgo_function_entry_coverage) {
auto &EntryBB = F.getEntryBlock();
- IRBuilder<> Builder(EntryBB.getFirstNonPHIOrDbgOrAlloca());
+ IRBuilder<> Builder(EntryBB.getFirstNonPHIOrAlloca());
// llvm.instrprof.cover(i8* <name>, i64 <hash>, i32 <num-counters>,
// i32 <index>)
Builder.CreateIntrinsic(
@@ -850,7 +850,7 @@ void FunctionInstrumenter::instrument() {
if (Opts.pgo_temporal_instrumentation) {
NumCounters += Opts.pgo_block_coverage ? 8 : 1;
auto &EntryBB = F.getEntryBlock();
- IRBuilder<> Builder(EntryBB.getFirstNonPHIOrDbgOrAlloca());
+ IRBuilder<> Builder(EntryBB.getFirstNonPHIOrAlloca());
// llvm.instrprof.timestamp(i8* <name>, i64 <hash>, i32 <num-counters>,
// i32 <index>)
Builder.CreateIntrinsic(Intrinsic::instrprof_timestamp,
@@ -861,7 +861,7 @@ void FunctionInstrumenter::instrument() {
}
for (auto *InstrBB : InstrumentBBs) {
- IRBuilder<> Builder(InstrBB->getFirstNonPHIOrDbgOrAlloca());
+ IRBuilder<> Builder(InstrBB->getFirstNonPHIOrAlloca());
assert(Builder.GetInsertPoint() != InstrBB->end() &&
"Cannot get the Instrumentation point");
// llvm.instrprof.increment(i8* <name>, i64 <hash>, i32 <num-counters>,
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
index f3436f5c9b0fe3..c8833ef0c03cda 100644
--- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
+++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
@@ -530,7 +530,7 @@ static bool shouldInstrumentBlock(const Function &F, const BasicBlock *BB,
// NumberOfInstrumentedBlocks() might complicate calculation of code coverage
// percentage. Also, unreachable instructions frequently have no debug
// locations.
- if (isa<UnreachableInst>(BB->getFirstNonPHIOrDbgOrLifetime()))
+ if (isa<UnreachableInst>(BB->getFirstNonPHIOrLifetime()))
return false;
// Don't insert coverage into blocks without a valid insertion point
diff --git a/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp b/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp
index d7c201c5753b35..6e4de540e0fdde 100644
--- a/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp
+++ b/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp
@@ -407,7 +407,7 @@ static void splitCallSite(CallBase &CB,
// constant incoming values.
static bool isPredicatedOnPHI(CallBase &CB) {
BasicBlock *Parent = CB.getParent();
- if (&CB != &*Parent->getFirstNonPHIOrDbg())
+ if (&CB != &*Parent->getFirstNonPHIOrPseudoProbe())
return false;
for (auto &PN : Parent->phis()) {
@@ -497,7 +497,7 @@ static bool doCallSiteSplitting(Function &F, TargetLibraryInfo &TLI,
DomTreeUpdater DTU(&DT, DomTreeUpdater::UpdateStrategy::Lazy);
bool Changed = false;
for (BasicBlock &BB : llvm::make_early_inc_range(F)) {
- auto II = BB.getFirstNonPHIOrDbg()->getIterator();
+ auto II = BB.getFirstNonPHIOrPseudoProbe()->getIterator();
auto IE = BB.getTerminator()->getIterator();
// Iterate until we reach the terminator instruction. tryToSplitCallSite
// can replace BB's terminator in case BB is a successor of itself. In that
diff --git a/llvm/lib/Transforms/Scalar/GuardWidening.cpp b/llvm/lib/Transforms/Scalar/GuardWidening.cpp
index 3675f3d24d5313..52aaa9a089f203 100644
--- a/llvm/lib/Transforms/Scalar/GuardWidening.cpp
+++ b/llvm/lib/Transforms/Scalar/GuardWidening.cpp
@@ -599,7 +599,7 @@ static std::optional<BasicBlock::iterator>
getFreezeInsertPt(Value *V, const DominatorTree &DT) {
auto *I = dyn_cast<Instruction>(V);
if (!I)
- return DT.getRoot()->getFirstNonPHIOrDbgOrAlloca()->getIterator();
+ return DT.getRoot()->getFirstNonPHIOrAlloca()->getIterator();
std::optional<BasicBlock::iterator> Res = I->getInsertionPointAfterDef();
// If there is no place to add freeze - return nullptr.
diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
index ee12796d988842..723277cf6e0fb2 100644
--- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
@@ -338,7 +338,7 @@ bool JumpThreadingPass::runImpl(Function &F_, FunctionAnalysisManager *FAM_,
BasicBlock *Succ = BI->getSuccessor();
if (
// The terminator must be the only non-phi instruction in BB.
- BB.getFirstNonPHIOrDbg(true)->isTerminator() &&
+ BB.getFirstNonPHIOrPseudoProbe()->isTerminator() &&
// Don't alter Loop headers and latches to ensure another pass can
// detect and transform nested loops later.
!LoopHeaders.count(&BB) && !LoopHeaders.count(Succ) &&
diff --git a/llvm/lib/Transforms/Scalar/LoopFuse.cpp b/llvm/lib/Transforms/Scalar/LoopFuse.cpp
index b9e65fb0ed5209..7fe5721642a449 100644
--- a/llvm/lib/Transforms/Scalar/LoopFuse.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopFuse.cpp
@@ -892,8 +892,8 @@ struct LoopFuser {
assert(FC1.GuardBranch && "Expecting valid FC1 guard branch");
if (!isSafeToMoveBefore(*FC0.ExitBlock,
- *FC1.ExitBlock->getFirstNonPHIOrDbg(), DT,
- &PDT, &DI)) {
+ *FC1.ExitBlock->getFirstNonPHIOrPseudoProbe(),
+ DT, &PDT, &DI)) {
LLVM_DEBUG(dbgs() << "Fusion candidate contains unsafe "
"instructions in exit block. Not fusing.\n");
++NonEmptyExitBlock;
diff --git a/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp b/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
index a188c33528e5e9..ab13f8d53c123e 100644
--- a/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
@@ -3448,7 +3448,7 @@ bool LoopIdiomRecognize::recognizeShiftUntilBitTest() {
if (auto *BitPosI = dyn_cast<Instruction>(BitPos))
InsertPt = BitPosI->getInsertionPointAfterDef();
else
- InsertPt = DT->getRoot()->getFirstNonPHIOrDbgOrAlloca();
+ InsertPt = DT->getRoot()->getFirstNonPHIOrAlloca();
if (!InsertPt)
return false;
FreezeInst *BitPosFrozen =
diff --git a/llvm/lib/Transforms/Scalar/Reassociate.cpp b/llvm/lib/Transforms/Scalar/Reassociate.cpp
index 8ce7d7061b403b..b8b29f86cf7db8 100644
--- a/llvm/lib/Transforms/Scalar/Reassociate.cpp
+++ b/llvm/lib/Transforms/Scalar/Reassociate.cpp
@@ -888,7 +888,7 @@ static Value *NegateValue(Value *V, Instruction *BI,
} else {
InsertPt = TheNeg->getFunction()
->getEntryBlock()
- .getFirstNonPHIOrDbg()
+ .getFirstNonPHIOrPseudoProbe()
->getIterator();
}
diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp
index e6407049899ec4..ec9452b3ef479a 100644
--- a/llvm/lib/Transforms/Scalar/SROA.cpp
+++ b/llvm/lib/Transforms/Scalar/SROA.cpp
@@ -1669,7 +1669,7 @@ static StoreInst *getPHIStoreToRewrite(PHINode &PN, bool PreserveCFG,
BasicBlock *BB = PN.getParent();
// TODO: Allow a harmless prefix between the PHIs and the store.
- if (&*BB->getFirstNonPHIOrDbg() != SI)
+ if (&*BB->getFirstNonPHIOrPseudoProbe() != SI)
return nullptr;
Value *StoredValue = SI->getValueOperand();
diff --git a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
index 0d8b04c409d5bd..61764fccf7b171 100644
--- a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
+++ b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
@@ -835,7 +835,7 @@ static bool unswitchTrivialSwitch(Loop &L, SwitchInst &SI, DominatorTree &DT,
// instruction in the block.
auto *TI = BBToCheck.getTerminator();
bool isUnreachable = isa<UnreachableInst>(TI);
- return !isUnreachable || &*BBToCheck.getFirstNonPHIOrDbg() != TI;
+ return !isUnreachable || &*BBToCheck.getFirstNonPHIOrPseudoProbe() != TI;
};
SmallVector<int, 4> ExitCaseIndices;
diff --git a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
index f891bf693b560f..1166c9d22faf21 100644
--- a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
@@ -1103,7 +1103,7 @@ bool TailRecursionEliminator::processBlock(BasicBlock &BB) {
if (UncondBrInst *BI = dyn_cast<UncondBrInst>(TI)) {
BasicBlock *Succ = BI->getSuccessor();
- ReturnInst *Ret = dyn_cast<ReturnInst>(Succ->getFirstNonPHIOrDbg(true));
+ ReturnInst *Ret = dyn_cast<ReturnInst>(Succ->getFirstNonPHIOrPseudoProbe());
if (!Ret)
return false;
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
index e80f7460066eec..b614568baaa79e 100644
--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -1349,7 +1349,7 @@ SplitBlockPredecessorsImpl(BasicBlock *BB, ArrayRef<BasicBlock *> Preds,
// to be applied to the new latch.
OldLatch = L->getLoopLatch();
} else
- BI->setDebugLoc(BB->getFirstNonPHIOrDbg()->getDebugLoc());
+ BI->setDebugLoc(BB->getFirstNonPHIOrPseudoProbe()->getDebugLoc());
// Move the edges from Preds to point to NewBB instead of BB.
for (BasicBlock *Pred : Preds) {
diff --git a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
index 65bff2b878bda0..a92e671bd97664 100644
--- a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
+++ b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
@@ -123,7 +123,7 @@ llvm::SplitKnownCriticalEdge(Instruction *TI, unsigned SuccNum,
return nullptr;
if (Options.IgnoreUnreachableDests &&
- isa<UnreachableInst>(DestBB->getFirstNonPHIOrDbgOrLifetime()))
+ isa<UnreachableInst>(DestBB->getFirstNonPHIOrLifetime()))
return nullptr;
auto *LI = Options.LI;
diff --git a/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp b/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp
index eaf2a708e31d29..101775f83252ab 100644
--- a/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp
+++ b/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp
@@ -198,7 +198,7 @@ void llvm::moveInstructionsToTheBeginning(BasicBlock &FromBB, BasicBlock &ToBB,
ScalarEvolution &SE) {
for (Instruction &I :
llvm::make_early_inc_range(llvm::drop_begin(llvm::reverse(FromBB)))) {
- BasicBlock::iterator MovePos = ToBB.getFirstNonPHIOrDbg();
+ BasicBlock::iterator MovePos = ToBB.getFirstNonPHIOrPseudoProbe();
if (isSafeToMoveBefore(I, *MovePos, DT, &PDT, &DI)) {
// Update SCEV to ensure it remains valid throughout the function.
diff --git a/llvm/lib/Transforms/Utils/IRNormalizer.cpp b/llvm/lib/Transforms/Utils/IRNormalizer.cpp
index 3f59044e0ab2e0..54e027c9da4f4b 100644
--- a/llvm/lib/Transforms/Utils/IRNormalizer.cpp
+++ b/llvm/lib/Transforms/Utils/IRNormalizer.cpp
@@ -454,14 +454,14 @@ void IRNormalizer::reorderInstructions(Function &F) const {
// Reorder based on the topological sort.
while (!TopologicalSort.empty()) {
auto *Instruction = TopologicalSort.top();
- auto FirstNonPHIOrDbgOrAlloca = BB.getFirstNonPHIOrDbgOrAlloca();
- if (auto *Call = dyn_cast<CallInst>(&*FirstNonPHIOrDbgOrAlloca)) {
+ auto FirstNonPHIOrAlloca = BB.getFirstNonPHIOrAlloca();
+ if (auto *Call = dyn_cast<CallInst>(&*FirstNonPHIOrAlloca)) {
if (Call->getIntrinsicID() ==
Intrinsic::experimental_convergence_entry ||
Call->getIntrinsicID() == Intrinsic::experimental_convergence_loop)
- FirstNonPHIOrDbgOrAlloca++;
+ FirstNonPHIOrAlloca++;
}
- Instruction->moveBefore(FirstNonPHIOrDbgOrAlloca);
+ Instruction->moveBefore(FirstNonPHIOrAlloca);
TopologicalSort.pop();
}
}
@@ -476,11 +476,10 @@ void IRNormalizer::reorderDefinition(
{
const auto *BasicBlock = Definition->getParent();
- const auto FirstNonPHIOrDbgOrAlloca =
- BasicBlock->getFirstNonPHIOrDbgOrAlloca();
- if (FirstNonPHIOrDbgOrAlloca == BasicBlock->end())
+ const auto FirstNonPHIOrAlloca = BasicBlock->getFirstNonPHIOrAlloca();
+ if (FirstNonPHIOrAlloca == BasicBlock->end())
return; // TODO: Is this necessary?
- if (Definition->comesBefore(&*FirstNonPHIOrDbgOrAlloca))
+ if (Definition->comesBefore(&*FirstNonPHIOrAlloca))
return; // TODO: Do some kind of ordering for these instructions.
}
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 89973d064a84da..bcce83a84626a4 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -2759,7 +2759,8 @@ bool CompatibleSets::shouldBelongToSameSet(ArrayRef<InvokeInst *> Invokes) {
// Either both `invoke`s must not have a normal destination,
// or both `invoke`s must have a normal destination,
auto HasNormalDest = [](InvokeInst *II) {
- return !isa<UnreachableInst>(II->getNormalDest()->getFirstNonPHIOrDbg());
+ return !isa<UnreachableInst>(
+ II->getNormalDest()->getFirstNonPHIOrPseudoProbe());
};
if (any_of(Invokes, HasNormalDest)) {
// Do not merge `invoke` that does not have a normal destination with one
@@ -2844,8 +2845,8 @@ static void mergeCompatibleInvokesImpl(ArrayRef<InvokeInst *> Invokes,
if (DTU)
Updates.reserve(2 + 3 * Invokes.size());
- bool HasNormalDest =
- !isa<UnreachableInst>(Invokes[0]->getNormalDest()->getFirstNonPHIOrDbg());
+ bool HasNormalDest = !isa<UnreachableInst>(
+ Invokes[0]->getNormalDest()->getFirstNonPHIOrPseudoProbe());
// Clone one of the invokes into a new basic block.
// Since they are all compatible, it doesn't matter which invoke is cloned.
@@ -8825,7 +8826,7 @@ bool SimplifyCFGOpt::simplifyUncondBranch(UncondBrInst *BI,
Options.NeedCanonicalLoop &&
(!LoopHeaders.empty() && BB->hasNPredecessorsOrMore(2) &&
(is_contained(LoopHeaders, BB) || is_contained(LoopHeaders, Succ)));
- BasicBlock::iterator I = BB->getFirstNonPHIOrDbg();
+ BasicBlock::iterator I = BB->getFirstNonPHIOrPseudoProbe();
if (I->isTerminator() && BB != &BB->getParent()->getEntryBlock() &&
!NeedCanonicalLoop && TryToSimplifyUncondBranchFromEmptyBlock(BB, DTU))
return true;
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index a1a25390cbfc37..b1acf0d52f9b64 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -18831,7 +18831,7 @@ InstructionCost BoUpSLP::getSpillCost() {
if (Budget > BudgetLimit)
break;
if (!isa<CatchSwitchInst>(BB->getTerminator()) &&
- !CheckForNonVecCallsInSameBlock(&*BB->getFirstNonPHIOrDbgOrAlloca(),
+ !CheckForNonVecCallsInSameBlock(&*BB->getFirstNonPHIOrAlloca(),
BB->getTerminator()))
continue;
Worklist.append(pred_begin(BB), pred_end(BB));
@@ -19007,8 +19007,8 @@ InstructionCost BoUpSLP::getSpillCost() {
// Check for call instruction in between blocks.
// 1. Check entry's block to the head.
if (Entry->getOpcode() != Instruction::PHI &&
- !CheckForNonVecCallsInSameBlock(
- &*Parent->getFirstNonPHIOrDbgOrAlloca(), LastInst)) {
+ !CheckForNonVecCallsInSameBlock(&*Parent->getFirstNonPHIOrAlloca(),
+ LastInst)) {
AddCosts(Op, GetSpillScale(Parent));
continue;
}
@@ -25779,7 +25779,7 @@ bool BoUpSLP::canVersionBlockForRuntimeChecks(BasicBlock *BB) const {
return false;
// Only static allocas at the start of the entry block can stay in the header
// block, any other alloca would have to be duplicated with the body.
- if (any_of(make_range(BB->getFirstNonPHIOrDbgOrAlloca(), BB->end()),
+ if (any_of(make_range(BB->getFirstNonPHIOrAlloca(), BB->end()),
IsaPred<AllocaInst>))
return false;
return true;
@@ -26645,7 +26645,7 @@ BoUpSLP::vectorizeTree(const ExtraValueToDebugLocsMap &ExternallyUsedValues,
IVec->getParent()->getLandingPadInst()->getIterator()));
else
Builder.SetInsertPoint(
- IVec->getParent()->getFirstNonPHIOrDbgOrLifetime());
+ IVec->getParent()->getFirstNonPHIOrLifetime());
} else if (auto *IVec = dyn_cast<Instruction>(Vec)) {
Builder.SetInsertPoint(IVec->getNextNode());
}
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
index e3e22ce05e6a45..52d770dbdb3ed9 100644
--- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -4753,7 +4753,7 @@ TEST_F(OpenMPIRBuilderTest, CreateTeamsWithThreadLimit) {
dyn_cast<UncondBrInst>(PushNumTeamsCallInst->getNextNode());
ASSERT_NE(BrInst, nullptr);
BasicBlock::iterator NextInstruction =
- BrInst->getSuccessor(0)->getFirstNonPHIOrDbgOrLifetime();
+ BrInst->getSuccessor(0)->getFirstNonPHIOrLifetime();
CallInst *ForkTeamsCI = nullptr;
if (NextInstruction != BrInst->getSuccessor()->end())
ForkTeamsCI = dyn_cast_if_present<CallInst>(NextInstruction);
@@ -4810,7 +4810,7 @@ TEST_F(OpenMPIRBuilderTest, CreateTeamsWithNumTeamsUpper) {
dyn_cast<UncondBrInst>(PushNumTeamsCallInst->getNextNode());
ASSERT_NE(BrInst, nullptr);
BasicBlock::iterator NextInstruction =
- BrInst->getSuccessor()->getFirstNonPHIOrDbgOrLifetime();
+ BrInst->getSuccessor()->getFirstNonPHIOrLifetime();
CallInst *ForkTeamsCI = nullptr;
if (NextInstruction != BrInst->getSuccessor()->end())
ForkTeamsCI = dyn_cast_if_present<CallInst>(NextInstruction);
@@ -4870,7 +4870,7 @@ TEST_F(OpenMPIRBuilderTest, CreateTeamsWithNumTeamsBoth) {
dyn_cast<UncondBrInst>(PushNumTeamsCallInst->getNextNode());
ASSERT_NE(BrInst, nullptr);
BasicBlock::iterator NextInstruction =
- BrInst->getSuccessor()->getFirstNonPHIOrDbgOrLifetime();
+ BrInst->getSuccessor()->getFirstNonPHIOrLifetime();
CallInst *ForkTeamsCI = nullptr;
if (NextInstruction != BrInst->getSuccessor()->end())
ForkTeamsCI = dyn_cast_if_present<CallInst>(NextInstruction);
@@ -4935,7 +4935,7 @@ TEST_F(OpenMPIRBuilderTest, CreateTeamsWithNumTeamsAndThreadLimit) {
dyn_cast<UncondBrInst>(PushNumTeamsCallInst->getNextNode());
ASSERT_NE(BrInst, nullptr);
BasicBlock::iterator NextInstruction =
- BrInst->getSuccessor()->getFirstNonPHIOrDbgOrLifetime();
+ BrInst->getSuccessor()->getFirstNonPHIOrLifetime();
CallInst *ForkTeamsCI = nullptr;
if (NextInstruction != BrInst->getSuccessor()->end())
ForkTeamsCI = dyn_cast_if_present<CallInst>(NextInstruction);
diff --git a/llvm/unittests/IR/DebugInfoTest.cpp b/llvm/unittests/IR/DebugInfoTest.cpp
index db598cb96950d6..e85bec6b5509db 100644
--- a/llvm/unittests/IR/DebugInfoTest.cpp
+++ b/llvm/unittests/IR/DebugInfoTest.cpp
@@ -696,7 +696,7 @@ TEST(AssignmentTrackingTest, Utils) {
ASSERT_TRUE(M);
Function &Fun1 = *M->getFunction("fun1");
- Instruction &Alloca = *Fun1.getEntryBlock().getFirstNonPHIOrDbg();
+ Instruction &Alloca = *Fun1.getEntryBlock().getFirstNonPHIOrPseudoProbe();
// 1. Check the Instruction <-> Intrinsic mappings work in fun1.
//
@@ -738,7 +738,7 @@ TEST(AssignmentTrackingTest, Utils) {
// Check that fun2's alloca and intrinsic have not not been updated.
Instruction &Fun2Alloca =
- *M->getFunction("fun2")->getEntryBlock().getFirstNonPHIOrDbg();
+ *M->getFunction("fun2")->getEntryBlock().getFirstNonPHIOrPseudoProbe();
DIAssignID *Fun2ID = cast_or_null<DIAssignID>(
Fun2Alloca.getMetadata(LLVMContext::MD_DIAssignID));
EXPECT_NE(New, Fun2ID);
@@ -750,7 +750,7 @@ TEST(AssignmentTrackingTest, Utils) {
// 3. Check that deleting dbg.assigns from a specific instruction works.
Instruction &Fun3Alloca =
- *M->getFunction("fun3")->getEntryBlock().getFirstNonPHIOrDbg();
+ *M->getFunction("fun3")->getEntryBlock().getFirstNonPHIOrPseudoProbe();
auto Fun3Markers = at::getDVRAssignmentMarkers(&Fun3Alloca);
ASSERT_TRUE(std::distance(Fun3Markers.begin(), Fun3Markers.end()) == 1);
at::deleteAssignmentMarkers(&Fun3Alloca);
diff --git a/llvm/unittests/Transforms/Utils/LocalTest.cpp b/llvm/unittests/Transforms/Utils/LocalTest.cpp
index 81c3f20f992dcd..dc4655a74c1810 100644
--- a/llvm/unittests/Transforms/Utils/LocalTest.cpp
+++ b/llvm/unittests/Transforms/Utils/LocalTest.cpp
@@ -732,7 +732,7 @@ TEST(Local, SalvageDbgAssignAddress) {
Function &Fun = *cast<Function>(M->getNamedValue("fun"));
Value *Arg = Fun.getArg(0);
- Instruction &GEP = *Fun.getEntryBlock().getFirstNonPHIOrDbg();
+ Instruction &GEP = *Fun.getEntryBlock().getFirstNonPHIOrPseudoProbe();
SmallVector<DbgVariableRecord *> Records;
findDbgUsers(&GEP, Records);
More information about the lldb-commits
mailing list