Lines Matching refs:SuccToSinkTo
70 static bool IsAcceptableTarget(Instruction *Inst, BasicBlock *SuccToSinkTo, in IsAcceptableTarget() argument
73 assert(SuccToSinkTo && "Candidate sink target is null"); in IsAcceptableTarget()
77 if (SuccToSinkTo->getTerminator()->isExceptionalTerminator()) in IsAcceptableTarget()
84 if (SuccToSinkTo->getUniquePredecessor() != Inst->getParent()) { in IsAcceptableTarget()
92 if (!DT.dominates(Inst->getParent(), SuccToSinkTo)) in IsAcceptableTarget()
96 Loop *succ = LI.getLoopFor(SuccToSinkTo); in IsAcceptableTarget()
131 BasicBlock *SuccToSinkTo = nullptr; in SinkInstruction() local
147 if (SuccToSinkTo) in SinkInstruction()
148 SuccToSinkTo = DT.findNearestCommonDominator(SuccToSinkTo, UseBlock); in SinkInstruction()
150 SuccToSinkTo = UseBlock; in SinkInstruction()
152 if (!DT.dominates(BB, SuccToSinkTo)) in SinkInstruction()
156 if (SuccToSinkTo) { in SinkInstruction()
159 while (SuccToSinkTo != BB && in SinkInstruction()
160 !IsAcceptableTarget(Inst, SuccToSinkTo, DT, LI)) in SinkInstruction()
161 SuccToSinkTo = DT.getNode(SuccToSinkTo)->getIDom()->getBlock(); in SinkInstruction()
162 if (SuccToSinkTo == BB) in SinkInstruction()
163 SuccToSinkTo = nullptr; in SinkInstruction()
167 if (!SuccToSinkTo) in SinkInstruction()
172 SuccToSinkTo->printAsOperand(dbgs(), false); dbgs() << ")\n"); in SinkInstruction()
175 Inst->moveBefore(&*SuccToSinkTo->getFirstInsertionPt()); in SinkInstruction()