ΒΆbool sinkRegion(llvm::DomTreeNode*,
llvm::AliasAnalysis*,
llvm::LoopInfo*,
llvm::DominatorTree*,
llvm::TargetLibraryInfo*,
llvm::TargetTransformInfo*,
llvm::Loop*,
llvm::AliasSetTracker*,
llvm::MemorySSAUpdater*,
llvm::ICFLoopSafetyInfo*,
llvm::SinkAndHoistLICMFlags&,
llvm::OptimizationRemarkEmitter*)
bool sinkRegion(llvm::DomTreeNode*,
llvm::AliasAnalysis*,
llvm::LoopInfo*,
llvm::DominatorTree*,
llvm::TargetLibraryInfo*,
llvm::TargetTransformInfo*,
llvm::Loop*,
llvm::AliasSetTracker*,
llvm::MemorySSAUpdater*,
llvm::ICFLoopSafetyInfo*,
llvm::SinkAndHoistLICMFlags&,
llvm::OptimizationRemarkEmitter*)
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, AliasAnalysis, LoopInfo, DominatorTree, DataLayout, 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.
Declared at: llvm/include/llvm/Transforms/Utils/LoopUtils.h:121