Lines Matching refs:LICM
1 //===-- LICM.cpp - Loop Invariant Code Motion Pass ------------------------===//
33 #define DEBUG_TYPE "licm"
63 DisablePromotion("disable-licm-promotion", cl::Hidden,
64 cl::desc("Disable memory promotion in LICM pass"));
67 struct LICM : public LoopPass {
69 LICM() : LoopPass(ID) {
170 char LICM::ID = 0;
171 INITIALIZE_PASS_BEGIN(LICM, "licm", "Loop Invariant Code Motion", false, false)
176 INITIALIZE_PASS_END(LICM, "licm", "Loop Invariant Code Motion", false, false)
178 Pass *llvm::createLICMPass() { return new LICM(); }
181 /// loop is not preserved so it is not a good idea to run LICM multiple
184 bool LICM::runOnLoop(Loop *L, LPPassManager &LPM) {
268 void LICM::SinkRegion(DomTreeNode *N) {
290 DEBUG(dbgs() << "LICM deleting dead inst: " << I << '\n');
315 void LICM::HoistRegion(DomTreeNode *N) {
332 DEBUG(dbgs() << "LICM folding inst: " << I << " --> " << *C << '\n');
357 bool LICM::canSinkOrHoistInst(Instruction &I) {
415 bool LICM::isNotUsedInLoop(Instruction &I) {
437 void LICM::sink(Instruction &I) {
438 DEBUG(dbgs() << "LICM sinking instruction: " << I << "\n");
558 void LICM::hoist(Instruction &I) {
559 DEBUG(dbgs() << "LICM hoisting to " << Preheader->getName() << ": "
575 bool LICM::isSafeToExecuteUnconditionally(Instruction &Inst) {
660 void LICM::PromoteAliasSet(AliasSet &AS) {
753 DEBUG(dbgs() << "LICM: Promoting value stored to in loop: " <<*SomePtr<<'\n');
792 void LICM::cloneBasicBlockAnalysis(BasicBlock *From, BasicBlock *To, Loop *L) {
802 void LICM::deleteAnalysisValue(Value *V, Loop *L) {