Site design / logo 2022 Stack Exchange Inc; user contributions licensed under CC BY-SA. First, you must have a pointer to the instruction that you wish to delete. This method can only be used on blocks that have a parent function. This is the correct point to insert copies at the beginning of a basic block. {ir-name}] [(attributes)]. Definition at line 316 of file MachineBasicBlock.h. Definition at line 485 of file BasicBlock.h. Changes [clang] Disable assertion that can "easily happen" (details / githubweb) [RISCV] Remove -enable-unsafe-fp-math from machine combiner tests. References addLiveIn(), llvm::LiveVariables::addNewBlock(), llvm::LiveRange::addSegment(), addSuccessor(), assert(), canSplitCriticalEdge(), Cond, llvm::SmallSet< T, N, C >::count(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::dbgs(), DL, llvm::numbers::e, E, end(), llvm::MachineFunction::end(), getFirstInstrTerminator(), getFirstTerminator(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::LiveIntervals::getInterval(), llvm::LiveIntervals::getMBBStartIdx(), llvm::ilist_node_with_parent< MachineBasicBlock, MachineFunction >::getNextNode(), llvm::MachineRegisterInfo::getNumVirtRegs(), getParent(), llvm::SlotIndex::getPrevSlot(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::LiveVariables::getVarInfo(), llvm::LiveRange::getVNInfoAt(), llvm::LiveIntervals::hasInterval(), i, I, llvm::Register::index2VirtReg(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineFunction::insert(), llvm::HexagonInstrInfo::insertBranch(), llvm::LiveIntervals::insertMBBInMaps(), instr_begin(), instr_end(), instrs(), llvm::is_contained(), isLayoutSuccessor(), isLiveOut(), llvm::Register::isPhysicalRegister(), llvm::MachineOperand::isUndef(), llvm::Register::isVirtualRegister(), llvm::LiveVariables::VarInfo::Kills, llvm::LiveRange::liveAt(), liveins(), LLVM_DEBUG, llvm::make_range(), MI, MRI, P, llvm::printMBBReference(), llvm::LiveVariables::VarInfo::removeKill(), llvm::LiveRange::removeSegment(), llvm::LiveIntervals::repairIntervalsInRange(), replacePhiUsesWith(), ReplaceUsesOfBlockWith(), llvm::MCID::Terminator, TII, TRI, and updateTerminator(). Using this interface can save some space. Referenced by llvm::ARMBasicBlockUtils::computeBlockSize(), llvm::AsmPrinter::emitFunctionBody(), getBranchHint(), llvm::GCNSchedStage::initGCNRegion(), llvm::ARMBlockPlacement::moveBasicBlock(), llvm::WebAssemblyExceptionInfo::recalculate(), runOnBasicBlock(), llvm::scavengeFrameVirtualRegs(), llvm::VLIWMachineScheduler::schedule(), and splitEdge(). See MIBundleBuilder::insert() for a more reliable way of doing that. Split the critical edge from this block to the given successor block, and return the newly created block, or null if splitting is not possible. Set this block to indicate that its address is used as something other than the target of a terminator, exception-handling target, jump table, or IR-level "blockaddress". The first segment is pretty simple: it creates an LLVM "module." In LLVM, a module represents a single unit of code that is to be processed together. References addSuccessor(), assert(), llvm::find(), llvm::BranchProbability::getUnknown(), llvm::is_contained(), normalizeSuccProbs(), succ_end(), and successors(). Return the underlying instruction list container. Remove specified successor from the successors list of this MachineBasicBlock. Definition at line 505 of file BasicBlock.cpp. Referenced by llvm::FunctionComparator::cmpBasicBlocks(), llvm::OpenMPIRBuilder::createParallel(), llvm::OpenMPIRBuilder::createReductions(), createSwitchStatement(), detectPopcountIdiom(), detectShiftUntilZeroIdiom(), findDependencies(), getFirstInsertionPt(), getFirstNonPHIOrDbgOrAlloca(), llvm::Instruction::getInsertionPointAfterDef(), llvm::CanonicalLoopInfo::getPreheaderIP(), llvm::insertDebugValuesForPHIs(), InsertSafepointPoll(), instrumentOneFunc(), llvm::RecurrenceDescriptor::isFixedOrderRecurrence(), llvm::isInTailCallPosition(), isSafeAndProfitableToSinkLoad(), LLVMGetNextInstruction(), llvm::MergeBlockIntoPredecessor(), mergeConditionalStoreToAddress(), moveBBContents(), OptimizeExtractBits(), reconnectPhis(), RewriteUsesOfClonedInstructions(), llvm::IRBuilderBase::SetInsertPoint(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), SinkCast(), sinkCmpExpression(), SinkShiftAndTruncate(), sizeWithoutDebug(), llvm::spliceBB(), llvm::VPBasicBlock::splitAt(), splitBasicBlock(), SplitBlockImpl(), llvm::JumpThreadingPass::threadThroughTwoBasicBlocks(), llvm::JumpThreadingPass::unfoldSelectInstr(), unswitchTrivialBranch(), and llvm::InstCombinerImpl::visitPHINode(). Skip any pseudo probe operation if SkipPseudoOp is true. I mean when a fresh basic block has just been allocated and it is still empty, how does one insert the first instruction inside? References getTerminatingDeoptimizeCall(). /// instructions followed by a single terminator instruction. Definition at line 172 of file BasicBlock.h. If NormalizeSuccProbs is true, then normalize successors' probabilities after the successor is removed. Definition at line 227 of file MachineBasicBlock.h. Referenced by llvm::AsmPrinter::emitBasicBlockStart(), and llvm::AsmPrinter::emitBBAddrMapSection(). References assert(), I, and normalizeSuccProbs(). Unlink 'this' from the containing function and delete it. Return true if this block has exactly N predecessors. Definition at line 449 of file MachineBasicBlock.h. Otherwise, execution proceeds as described below. Remove the possibly bundled instruction from the instruction list without deleting it. Definition at line 402 of file BasicBlock.cpp. Referenced by llvm::Instruction::comesBefore(). References liveout_begin(), liveout_end(), and llvm::make_range(). Definition at line 653 of file MachineBasicBlock.cpp. All values hold a context through their type. PHI nodes must have at least one entry. Definition at line 1026 of file MachineBasicBlock.cpp. If I is the head of a bundle of instructions, the whole bundle will be erased. Definition at line 321 of file BasicBlock.h. References llvm::User::getOperand(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getPrevNode(), and llvm::ReturnInst::getReturnValue(). Referenced by llvm::CanonicalLoopInfo::assertOK(), llvm::OpenMPIRBuilder::finalize(), and removePredecessor(). Referenced by llvm::MachineLoopInfo::findLoopPreheader(), isAlwaysIndirectTarget(), llvm::HexagonAsmPrinter::isBlockOnlyReachableByFallthrough(), and llvm::TailDuplicator::tailDuplicateAndUpdate(). Definition at line 599 of file MachineBasicBlock.h. References assert(), getParent(), and llvm::MachineFunctionProperties::TracksLiveness. This is the correct point to insert lowered copies at the beginning of a basic block that must be before any debugging information. Strip off pointer casts, all-zero GEPs and address space casts but ensures the representation of the result stays the same. Definition at line 2629 of file Core.cpp. Returns a pointer to the first instruction in this block that is not a, Returns an iterator to the first instruction in this block that is not a, Unlink this basic block from its current function and insert it into the function that, Unlink this basic block from its current function and insert it right after, Print the basic block to an output stream with an optional, Update all phi nodes in this basic block to refer to basic block, Update all phi nodes in this basic block's successors to refer to basic block, Support for debugging, callable in GDB: V->. References instr_rbegin(), MBBI, and llvm::skipDebugInstructionsBackward(). References llvm::StringRef::equals(), llvm::Instruction::getMetadata(), llvm::MDString::getString(), and getTerminator(). 42 /// This represents a single basic block in LLVM. Definition at line 2710 of file Core.cpp. In asserts builds, this checks the numbering. Definition at line 497 of file BasicBlock.cpp. /// This represents a single basic block in LLVM. References getParent(), and llvm::GlobalValue::getParent(). Referenced by cloneInstructionInExitBlock(), llvm::OpenMPIRBuilder::createParallel(), llvm::OpenMPIRBuilder::createTargetInit(), llvm::DemoteRegToStack(), llvm::VPWidenIntOrFpInductionRecipe::execute(), llvm::VPFirstOrderRecurrencePHIRecipe::execute(), llvm::VPReductionPHIRecipe::execute(), llvm::VPCanonicalIVPHIRecipe::execute(), llvm::CodeExtractor::extractCodeRegion(), llvm::SCEVExpander::findInsertPointAfter(), llvm::InnerLoopVectorizer::fixReduction(), foldGuardedFunnelShift(), getFirstInsertionPt(), llvm::Instruction::getInsertionPointAfterDef(), llvm::objcarc::BundledRetainClaimRVs::insertAfterInvokes(), llvm::insertDebugValuesForPHIs(), insertSpills(), instrumentOneFunc(), llvm::invertCondition(), makeStatepointExplicitImpl(), mergeConditionalStoreToAddress(), llvm::InstCombinerImpl::mergeStoreIntoSuccessor(), OptimizeExtractBits(), llvm::SCEVExpander::replaceCongruentIVs(), replaceExtractElements(), llvm::rewriteLoopExitValues(), llvm::InstCombinerImpl::run(), simplifyRelocatesOffABase(), SinkCast(), sinkCmpExpression(), SinkInstruction(), SinkShiftAndTruncate(), SplitLandingPadPredecessorsImpl(), TryToSinkInstruction(), and llvm::InstCombinerImpl::visitPHINode(). Definition at line 2701 of file Core.cpp. Insert a jump instruction by using llvm pass. Asserts that instruction order numbers are marked invalid, or that they are in ascending order. Referenced by llvm::AsmPrinter::emitBBAddrMapSection(), llvm::AsmPrinter::emitFunctionBody(), and llvm::DebugHandlerBase::endInstruction(). July 11, 2018 | 7 Minute Read. Referenced by llvm::ARMBlockPlacement::fixBackwardsWLS(), llvm::ScheduleDAGSDNodes::getDAGName(), and verifyCTRBranch(). References B, E, I, instr_begin(), and instr_end(). Still for debug purposes it may be useful to have iterators that won't assert if the liveness information is not current. References assert(), begin(), empty(), front(), llvm::Value::hasNUsesOrMore(), llvm::is_contained(), llvm::make_early_inc_range(), phis(), and llvm::predecessors(). This should return null if it can reach the block after it, but it uses an explicit branch to do so (e.g., a table jump). Definition at line 301 of file MachineBasicBlock.h. Returns the number of bytes known to be dereferenceable for the pointer value. If the block previously fell through to that block, it may now need a branch. Definition at line 500 of file BasicBlock.h. Definition at line 286 of file MachineBasicBlock.h. References llvm::CallingConv::Cold, llvm::MBBSectionID::Number, and llvm::MBBSectionID::Type. Referenced by llvm::createPHIsForSplitLoopExit(), and SplitLandingPadPredecessorsImpl(). Definition at line 930 of file MachineBasicBlock.h. Get the context in which this basic block lives. Definition at line 266 of file BasicBlock.h. Appends all metadata attached to this value to. Return whether (physical) register Reg has been defined and not killed as of just before Before. Definition at line 104 of file BasicBlock.h. Definition at line 321 of file MachineBasicBlock.h. Referenced by buildClonedLoopBlocks(), GeneratedRTChecks::emitMemRuntimeChecks(), and GeneratedRTChecks::emitSCEVChecks(). Referenced by llvm::PeelingModuloScheduleExpander::CreateLCSSAExitingBlock(), llvm::PeelingModuloScheduleExpander::fixupBranches(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), phis(), and replacePhiUsesWith(). Definition at line 379 of file MachineBasicBlock.h. Returns 0 is there's no non-PHI instruction. Strip off pointer casts, all-zero GEPs, address space casts, and aliases. Definition at line 433 of file BasicBlock.cpp. Unlink this basic block from its current function and insert it into the function that MovePos lives in, right before MovePos. Referenced by getCaseResults(), isSafeToSpeculateStore(), nextIRInstructionDataMatchesNextInst(), simplifyOneLoop(), sizeWithoutDebug(), and tryToMoveFreeBeforeNullTest(). A well formed basic block is formed of a list of non-terminating instructions followed by a single terminator instruction. Definition at line 1622 of file MachineBasicBlock.cpp. Given a machine basic block that branched to 'Old', change the code and CFG so that it branches to 'New' instead. Definition at line 1128 of file MachineBasicBlock.h. Definition at line 292 of file MachineBasicBlock.cpp. Definition at line 627 of file MachineBasicBlock.h. Insert unlinked basic block into a function. Referenced by llvm::R600InstrInfo::buildDefaultInstruction(), emitCalleeSavedRestores(), llvm::ARCFrameLowering::emitEpilogue(), emitGPDisp(), llvm::M68kFrameLowering::emitSPUpdate(), llvm::VEInstrInfo::expandExtendStackPseudo(), llvm::VEInstrInfo::expandGetStackTopPseudo(), llvm::SIInstrInfo::expandMovDPP64(), llvm::SIInstrInfo::expandPostRAPseudo(), findDebugLoc(), llvm::X86FrameLowering::inlineStackProbe(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::SIInstrInfo::insertNoops(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::ARCInstrInfo::loadImmediate(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::M68kInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::replaceBranchWithTailCall(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::M68kFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::M68kFrameLowering::spillCalleeSavedRegisters(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), and llvm::M68kInstrInfo::storeRegToStackSlot(). Obtain the first instruction in a basic block. Referenced by findInsertLocation(), and llvm::SplitEditor::leaveIntvAtTop(). Definition at line 960 of file MachineBasicBlock.h. Cause all subinstructions to "let go" of all the references that said subinstructions are maintaining. Referenced by llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::VETargetLowering::emitEHSjLjSetJmp(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::AArch64TargetLowering::EmitF128CSEL(), emitFROUND(), llvm::BPFTargetLowering::EmitInstrWithCustomInserter(), llvm::AVRTargetLowering::EmitInstrWithCustomInserter(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), EmitLoweredCascadedSelect(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::PPCTargetLowering::emitProbedAlloca(), emitReadCycleWidePseudo(), emitSelectPseudo(), llvm::MSP430TargetLowering::EmitShiftInstr(), emitXBegin(), llvm::AMDGPURegisterBankInfo::executeInWaterfallLoop(), llvm::VEInstrInfo::expandExtendStackPseudo(), llvm::SparcTargetLowering::expandSelectCC(), llvm::PPCFrameLowering::inlineStackProbe(), LowerFPToInt(), split(), splitAt(), llvm::SystemZ::splitBlockAfter(), llvm::SystemZ::splitBlockBefore(), and splitBlockForLoop(). The BasicBlock class allows malformed basic blocks to occur because it may be useful in the intermediate stage of constructing or modifying a program. Referenced by addPHINodeEntriesForMappedBlock(), AddPredecessorToBlock(), addUsersInExitBlock(), analyzeExitPHIsForOutputUses(), areInnerLoopExitPHIsSupported(), areInnerLoopLatchPHIsSupported(), areOuterLoopExitPHIsSupported(), canFoldTermCondOfLoop(), checkPHIs(), ConnectEpilog(), llvm::EpilogueVectorizerEpilogueLoop::createEpilogueVectorizedLoopSkeleton(), llvm::createPHIsForSplitLoopExit(), deleteLoopIfDead(), findOrCreatePHIInBlock(), FindPHIForConditionForwarding(), llvm::InnerLoopVectorizer::fixFixedOrderRecurrence(), llvm::InnerLoopVectorizer::fixReduction(), fixupPHINodeForNormalDest(), fixupPHINodeForUnwindDest(), ForwardSwitchConditionToPHI(), GetInductionVariable(), HandleInlinedEHPad(), isExistingPhi(), isLoopDead(), isPredicatedOnPHI(), isSafeToHoistInvoke(), moveLCSSAPhis(), removeEmptyCleanup(), removePredecessor(), llvm::SCEVExpander::replaceCongruentIVs(), replaceTargetsFromPHINode(), rewritePHINodesForExitAndUnswitchedBlocks(), rewritePHINodesForUnswitchedExitBlock(), scanPHIsAndUpdateValueMap(), SimplifyCondBranchToCondBranch(), splitCallSite(), llvm::splitLoopBound(), tryWidenCondBranchToCondBranch(), llvm::updatePhiNodes(), validateAndCostRequiredSelects(), and llvm::InstCombinerImpl::visitPHINode(). Skip and any pseudo operations as well if SkipPseudoOp is true. Definition at line 312 of file BasicBlock.h. You use the pointer to the basic block to get its list of instructions and then use the erase function to remove your instruction. Definition at line 429 of file BasicBlock.h. Return true if this value has the given type of metadata attached. Definition at line 602 of file MachineBasicBlock.h. Inserts an unlinked basic block into Parent. Definition at line 312 of file BasicBlock.h. Referenced by getTerminatingMustTailCall(), llvm::memtag::getUntagLocationIfFunctionExit(), llvm::InlineFunction(), and llvm::EscapeEnumerator::Next(). All Instructions BEFORE the iterator I are moved to the new BB and an unconditional branch is added to the new BB. /// represents a label to which a branch can jump. I can't seem to find how to insert that first instruction? Returns true if this is the entry block of the function. Definition at line 314 of file BasicBlock.h. Definition at line 1327 of file MachineBasicBlock.cpp. References llvm::AnalyzePhysRegInBundle(), begin(), end(), I, Info, liveins(), LQR_Dead, LQR_Live, LQR_Unknown, N, llvm::TargetRegisterInfo::regsOverlap(), S, successors(), and TRI. Definition at line 336 of file MachineBasicBlock.h. Insert MI into the instruction list before I, possibly inside a bundle. Referenced by llvm::LiveRegUnits::addLiveOuts(), llvm::LivePhysRegs::addLiveOutsNoPristines(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::X86InstrInfo::analyzeBranchPredicate(), areCFlagsAliveInSuccessors(), BBHasFallthrough(), blockEndIsUnreachable(), CanLowerPriorityDirectlyInPredecessors(), checkCCKill(), collectEHScopeMembers(), computeRegisterLiveness(), eraseDeadBBsAndChildren(), llvm::MachineLoopInfo::findLoopPreheader(), fixRegionTerminator(), flagsNeedToBePreservedBeforeTheTerminators(), getFallThroughMBB(), llvm::ReachingDefAnalysis::getGlobalUses(), getSingleLiveInSuccBB(), hasEHPadSuccessor(), llvm::MachineTraceMetrics::Ensemble::invalidate(), llvm::LiveVariables::isLiveOut(), isLiveOut(), isReachableAmongDominated(), llvm::HexagonInstrInfo::isSchedulingBoundary(), isSuccessor(), mayHaveInlineAsmBr(), mbbHasBackEdge(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::X86InstrInfo::optimizeCompareInstr(), OtherSucc(), llvm::LiveIntervals::pruneValue(), removeExternalCFGEdges(), llvm::CFIFixup::runOnMachineFunction(), salvageDebugInfoFromEmptyBlock(), shouldUseFrameHelper(), splitBlock(), splitMBB(), splitSuccessor(), and llvm::WriteGraph(). References llvm::TargetRegisterInfo::getNoPreservedMask(), isReturnBlock(), succ_empty(), and TRI. Definition at line 870 of file MachineBasicBlock.h. If the IR block has no name, it is identified numerically using the attribute syntax as "(%ir-block.{ir-slot})". Insert MI into the instruction list after I. Returns an alignment of the pointer value. Strip off pointer casts and all-constant inbounds GEPs. Return true if this value is a swifterror value. Update all phi nodes in this basic block to refer to basic block New instead of basic block Old. Referenced by llvm::MachineFunction::assignBeginEndSections(). Referenced by llvm::VETargetLowering::emitSjLjDispatchBlock(), and splitMBB(). Return true if there is a value handle associated with this value. ); // Replace "Add" as appropriate Or, if you want to insert an already existing instruction object: builder.insert (instruction); Share answered Nov 11, 2018 at 14:54 sepp2k 357k 52 667 670 Add a comment llvm llvm-ir bitcode Referenced by llvm::getEHScopeMembership(). Return true if this block has exactly N predecessors. Referenced by addLiveIn(), addLiveInRegs(), llvm::addLiveIns(), addSavedGPR(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), buildGitPtr(), llvm::RISCVInstrInfo::buildOutlinedFrame(), llvm::AArch64InstrInfo::buildOutlinedFrame(), llvm::ARMBaseInstrInfo::buildOutlinedFrame(), emitAlignedDPRCS2Spills(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::SparcFrameLowering::emitEpilogue(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::MachineRegisterInfo::EmitLiveInCopies(), llvm::SIFrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), emitShadowCallStackPrologue(), emitXBegin(), llvm::getFunctionLiveInPhysReg(), handleMustTailForwardedRegisters(), llvm::MipsFunctionInfo::initGlobalBaseReg(), INITIALIZE_PASS(), llvm::AArch64InstrInfo::insertOutlinedCall(), llvm::ARMBaseInstrInfo::insertOutlinedCall(), llvm::MipsCallLowering::lowerFormalArguments(), llvm::X86InstrInfo::optimizeCompareInstr(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), pushRegsToStack(), llvm::IRTranslator::runOnMachineFunction(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZELFFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::M68kFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), SplitCriticalEdge(), splitEdge(), updateLiveIn(), and updateLiveness(). Referenced by addPHINodeEntriesForMappedBlock(), AddPredecessorToBlock(), addUsersInExitBlock(), analyzeExitPHIsForOutputUses(), areInnerLoopExitPHIsSupported(), areInnerLoopLatchPHIsSupported(), areOuterLoopExitPHIsSupported(), canFoldTermCondOfLoop(), checkPHIs(), ConnectEpilog(), llvm::EpilogueVectorizerEpilogueLoop::createEpilogueVectorizedLoopSkeleton(), llvm::createPHIsForSplitLoopExit(), deleteLoopIfDead(), findOrCreatePHIInBlock(), FindPHIForConditionForwarding(), llvm::InnerLoopVectorizer::fixFixedOrderRecurrence(), llvm::InnerLoopVectorizer::fixReduction(), fixupPHINodeForNormalDest(), fixupPHINodeForUnwindDest(), ForwardSwitchConditionToPHI(), GetInductionVariable(), HandleInlinedEHPad(), isExistingPhi(), isLoopDead(), isPredicatedOnPHI(), isSafeToHoistInvoke(), moveLCSSAPhis(), removeEmptyCleanup(), removePredecessor(), llvm::SCEVExpander::replaceCongruentIVs(), replaceTargetsFromPHINode(), rewritePHINodesForExitAndUnswitchedBlocks(), rewritePHINodesForUnswitchedExitBlock(), scanPHIsAndUpdateValueMap(), SimplifyCondBranchToCondBranch(), splitCallSite(), llvm::splitLoopBound(), tryWidenCondBranchToCondBranch(), llvm::updatePhiNodes(), validateAndCostRequiredSelects(), and llvm::InstCombinerImpl::visitPHINode(). Definition at line 665 of file MachineBasicBlock.h. Returns 0 is there's no non-PHI instruction. Change all uses of this to point to a new, Change non-metadata uses of this to point to a new, Go through the uses list for this definition and make each use point to "V" if the callback ShouldReplace returns true for the given. Obtain the first basic block in a function. Referenced by llvm::avoidZeroOffsetLandingPad(), llvm::DebugHandlerBase::beginBasicBlock(), llvm::EHStreamer::computeCallSiteTable(), llvm::AsmPrinter::emitBasicBlockStart(), llvm::TargetLoweringObjectFileELF::getSectionForMachineBasicBlock(), and getSymbol(). Returns the number of bytes known to be dereferenceable for the pointer value. This operates on a function value. Note that unique predecessor doesn't mean single edge, there can be multiple edges from the unique predecessor to this block (for example a switch statement with multiple cases having the same destination). Referenced by AddRuntimeUnrollDisableMetaData(), llvm::LoopVersioning::annotateInstWithNoAlias(), llvm::JumpThreadingPass::cloneInstructions(), GeneratedRTChecks::Create(), llvm::createMemCpyLoopKnownSize(), createStringMetadata(), llvm::OpenMPIRBuilder::createTargetInit(), DisableAllLoopOptsOnLoop(), llvm::CodeExtractor::extractCodeRegion(), findOrCreatePHIBlock(), llvm::AMDGPULibCalls::fold(), insertCall(), insertUniqueBackedgeBlock(), llvm::PPCTTIImpl::isHardwareLoopProfitable(), llvm::MergeBasicBlockIntoOnlyPred(), llvm::parseWidenableBranch(), llvm::LoopVersioning::prepareNoAliasMetadata(), ReduceLoopStrength(), removeNonFeasibleEdges(), removeUndefIntroducingPredecessor(), rewritePHIsForCleanupPad(), llvm::SimpleLoopUnswitchPass::run(), llvm::LoopVectorizeHints::setAlreadyVectorized(), llvm::Loop::setLoopAlreadyUnrolled(), llvm::Loop::setLoopMustProgress(), splitBasicBlock(), splitBasicBlockBefore(), llvm::splitBB(), llvm::SplitBlockAndInsertIfThenElse(), SplitBlockAndInsertIfThenImpl(), SplitLandingPadPredecessorsImpl(), llvm::splitLoopBound(), llvm::JumpThreadingPass::threadThroughTwoBasicBlocks(), updatePredecessorProfileMetadata(), llvm::LoopVersioning::versionLoop(), and ~BasicBlock(). Return the iterator to the element after the one removed. The probability is not provided because BPI is not available (e.g. Definition at line 1466 of file MachineBasicBlock.cpp. Definition at line 364 of file BasicBlock.h. The returned basic block can be used as an iterator. mergeFuncs also hashes IR, but for the whole function. Definition at line 458 of file BasicBlock.h. Definition at line 307 of file BasicBlock.h. This array is populated with LLVMBasicBlockRef instances. Return true if there is metadata referencing this value. References llvm::BranchProbability::getZero(), P, and succ_size(). Return the LLVM basic block that this instance corresponded to originally. Referenced by llvm::SIInstrInfo::analyzeBranch(), llvm::HexagonInstrInfo::analyzeLoopForPipelining(), llvm::ARMBaseInstrInfo::analyzeLoopForPipelining(), llvm::PPCInstrInfo::analyzeLoopForPipelining(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), llvm::SIInstrInfo::convertNonUniformIfRegion(), llvm::SIInstrInfo::convertNonUniformLoopRegion(), copyDebugInfoToPredecessor(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::Mips16FrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitEpilogue(), llvm::SIFrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::LoongArchFrameLowering::emitEpilogue(), llvm::RISCVFrameLowering::emitEpilogue(), llvm::CSKYFrameLowering::emitEpilogue(), llvm::ARCFrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::WebAssemblyFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::M68kFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::LegalizerHelper::fewerElementsVectorPhi(), findBranchDebugLoc(), findHoistingInsertPosAndDeps(), findInsertLocation(), llvm::findPHICopyInsertPoint(), llvm::getEHScopeMembership(), getFirstTerminator(), llvm::SITargetLowering::getPrefLoopAlignment(), llvm::HexagonInstrInfo::insertBranch(), insertCSRRestores(), llvm::SIInstrInfo::insertReturn(), InsertReturnAddressAuth(), insertUndefLaneMask(), llvm::SystemZPostRASchedStrategy::leaveMBB(), llvm::SIInstrInfo::legalizeOperands(), llvm::LegalizerHelper::moreElementsVectorPhi(), llvm::LegalizerHelper::narrowScalar(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::SelectionDAGISel::runOnMachineFunction(), signOutlinedFunction(), SplitCriticalEdge(), splitMBB(), terminators(), and llvm::LegalizerHelper::widenScalar().
Spring Webflux Disable Cors, Terraria Community Discord, X-forwarded-for Header Postman, Estate Manager Resume, List Of Famous Greyhounds, Rotation Of A Rigid Body About A Fixed Axis, Does Nora Marry On Brothers And Sisters, Ag-grid Complex Objects, How Many Octaves Are There In Singing, Malaysia Weather In November,
Spring Webflux Disable Cors, Terraria Community Discord, X-forwarded-for Header Postman, Estate Manager Resume, List Of Famous Greyhounds, Rotation Of A Rigid Body About A Fixed Axis, Does Nora Marry On Brothers And Sisters, Ag-grid Complex Objects, How Many Octaves Are There In Singing, Malaysia Weather In November,