Lines Matching refs:SuccToSinkTo
65 static bool IsAcceptableTarget(Instruction *Inst, BasicBlock *SuccToSinkTo, in IsAcceptableTarget() argument
68 assert(SuccToSinkTo && "Candidate sink target is null"); in IsAcceptableTarget()
72 if (SuccToSinkTo->getTerminator()->isExceptionalTerminator()) in IsAcceptableTarget()
79 if (SuccToSinkTo->getUniquePredecessor() != Inst->getParent()) { in IsAcceptableTarget()
87 if (!DT.dominates(Inst->getParent(), SuccToSinkTo)) in IsAcceptableTarget()
91 Loop *succ = LI.getLoopFor(SuccToSinkTo); in IsAcceptableTarget()
126 BasicBlock *SuccToSinkTo = nullptr; in SinkInstruction() local
142 if (SuccToSinkTo) in SinkInstruction()
143 SuccToSinkTo = DT.findNearestCommonDominator(SuccToSinkTo, UseBlock); in SinkInstruction()
145 SuccToSinkTo = UseBlock; in SinkInstruction()
147 if (!DT.dominates(BB, SuccToSinkTo)) in SinkInstruction()
151 if (SuccToSinkTo) { in SinkInstruction()
154 while (SuccToSinkTo != BB && in SinkInstruction()
155 !IsAcceptableTarget(Inst, SuccToSinkTo, DT, LI)) in SinkInstruction()
156 SuccToSinkTo = DT.getNode(SuccToSinkTo)->getIDom()->getBlock(); in SinkInstruction()
157 if (SuccToSinkTo == BB) in SinkInstruction()
158 SuccToSinkTo = nullptr; in SinkInstruction()
162 if (!SuccToSinkTo) in SinkInstruction()
167 SuccToSinkTo->printAsOperand(dbgs(), false); dbgs() << ")\n"); in SinkInstruction()
170 Inst->moveBefore(&*SuccToSinkTo->getFirstInsertionPt()); in SinkInstruction()