LLVM: lib/Transforms/Scalar/LoopLoadElimination.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define LLE_OPTION "loop-load-elim"
#define DEBUG_TYPE LLE_OPTION
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