Go to the source code of this file.
Functions
STATISTIC (NumLoopLoadEliminted, "Number of loads eliminated by LLE")
static bool
doesStoreDominatesAllLatches (BasicBlock *StoreBlock, Loop *L, DominatorTree *DT)
Check if the store dominates all latches, so as long as there is no intervening store this value will be loaded in the next iteration.
static bool
isLoadConditional (LoadInst *Load, Loop *L)
Return true if the load is not executed on all paths in the loop.
static bool
eliminateLoadsAcrossLoops (Function &F , LoopInfo &LI, DominatorTree &DT, BlockFrequencyInfo *BFI, ProfileSummaryInfo *PSI, ScalarEvolution *SE, AssumptionCache *AC, LoopAccessInfoManager &LAIs)
◆ DEBUG_TYPE#define DEBUG_TYPE LLE_OPTION
◆ LLE_OPTION#define LLE_OPTION "loop-load -elim"
◆ doesStoreDominatesAllLatches()◆ eliminateLoadsAcrossLoops()◆ isLoadConditional()◆ STATISTIC()
STATISTIC
(
NumLoopLoadEliminted
,
"Number of loads eliminated by LLE"
)
◆ CheckPerElim
cl::opt < unsigned > CheckPerElim("runtime-check-per-loop-load -elim", cl::Hidden, cl::desc ("Max number of memchecks allowed per eliminated load on average"), cl::init(1)) ( "runtime-check-per-loop-load -elim" , cl::Hidden , cl::desc ("Max number of memchecks allowed per eliminated load on average") , cl::init(1) )
static
◆ LoadElimSCEVCheckThreshold