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()
71 if (SuccToSinkTo->isEHPad()) in IsAcceptableTarget()
78 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
143 if (SuccToSinkTo) in SinkInstruction()
144 SuccToSinkTo = DT.findNearestCommonDominator(SuccToSinkTo, UseBlock); in SinkInstruction()
146 SuccToSinkTo = UseBlock; in SinkInstruction()
148 if (!DT.dominates(BB, SuccToSinkTo)) in SinkInstruction()
152 if (SuccToSinkTo) { in SinkInstruction()
155 while (SuccToSinkTo != BB && in SinkInstruction()
156 !IsAcceptableTarget(Inst, SuccToSinkTo, DT, LI)) in SinkInstruction()
157 SuccToSinkTo = DT.getNode(SuccToSinkTo)->getIDom()->getBlock(); in SinkInstruction()
158 if (SuccToSinkTo == BB) in SinkInstruction()
159 SuccToSinkTo = nullptr; in SinkInstruction()
163 if (!SuccToSinkTo) in SinkInstruction()
168 SuccToSinkTo->printAsOperand(dbgs(), false); dbgs() << ")\n"); in SinkInstruction()
171 Inst->moveBefore(&*SuccToSinkTo->getFirstInsertionPt()); in SinkInstruction()