ΒΆbool sinkRegion(
    llvm::DomTreeNode*,
    llvm::AAResults*,
    llvm::LoopInfo*,
    llvm::DominatorTree*,
    llvm::BlockFrequencyInfo*,
    llvm::TargetLibraryInfo*,
    llvm::TargetTransformInfo*,
    llvm::Loop* CurLoop,
    llvm::MemorySSAUpdater&,
    llvm::ICFLoopSafetyInfo*,
    llvm::SinkAndHoistLICMFlags&,
    llvm::OptimizationRemarkEmitter*,
    llvm::Loop* OutermostLoop = nullptr)

Description

Walk the specified region of the CFG (defined by all blocks dominated by the specified block, and that are in the current loop) in reverse depth first order w.r.t the DominatorTree. This allows us to visit uses before definitions, allowing us to sink a loop body in one pass without iteration. Takes DomTreeNode, AAResults, LoopInfo, DominatorTree, BlockFrequencyInfo, TargetLibraryInfo, Loop, AliasSet information for all instructions of the loop and loop safety information as arguments. Diagnostics is emitted via \p ORE. It returns changed status.\p CurLoop is a loop to do sinking on. \p OutermostLoop is used only when this function is called by \p sinkRegionForLoopNest.

Declared at: llvm/include/llvm/Transforms/Utils/LoopUtils.h:149

Parameters

llvm::DomTreeNode*
llvm::AAResults*
llvm::LoopInfo*
llvm::DominatorTree*
llvm::BlockFrequencyInfo*
llvm::TargetLibraryInfo*
llvm::TargetTransformInfo*
llvm::Loop* CurLoop
llvm::MemorySSAUpdater&
llvm::ICFLoopSafetyInfo*
llvm::SinkAndHoistLICMFlags&
llvm::OptimizationRemarkEmitter*
llvm::Loop* OutermostLoop = nullptr