• Home
  • Raw
  • Download

Lines Matching refs:SU

186   bool IsReachable(const SUnit *SU, const SUnit *TargetSU) {  in IsReachable()  argument
187 return Topo.IsReachable(SU, TargetSU); in IsReachable()
192 bool WillCreateCycle(SUnit *SU, SUnit *TargetSU) { in WillCreateCycle() argument
193 return Topo.WillCreateCycle(SU, TargetSU); in WillCreateCycle()
199 void AddPred(SUnit *SU, const SDep &D) { in AddPred() argument
200 Topo.AddPred(SU, D.getSUnit()); in AddPred()
201 SU->addPred(D); in AddPred()
207 void RemovePred(SUnit *SU, const SDep &D) { in RemovePred() argument
208 Topo.RemovePred(SU, D.getSUnit()); in RemovePred()
209 SU->removePred(D); in RemovePred()
213 bool isReady(SUnit *SU) { in isReady() argument
215 AvailableQueue->isReady(SU); in isReady()
218 void ReleasePred(SUnit *SU, const SDep *PredEdge);
219 void ReleasePredecessors(SUnit *SU);
222 void AdvancePastStalls(SUnit *SU);
223 void EmitNode(SUnit *SU);
339 DEBUG(for (SUnit &SU : SUnits) in Schedule()
340 SU.dumpAll(this)); in Schedule()
365 void ScheduleDAGRRList::ReleasePred(SUnit *SU, const SDep *PredEdge) { in ReleasePred() argument
381 PredSU->setHeightToAtLeast(SU->getHeight() + PredEdge->getLatency()); in ReleasePred()
525 void ScheduleDAGRRList::ReleasePredecessors(SUnit *SU) { in ReleasePredecessors() argument
527 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end(); in ReleasePredecessors()
529 ReleasePred(SU, &*I); in ReleasePredecessors()
536 assert((!RegDef || RegDef == SU || RegDef == I->getSUnit()) && in ReleasePredecessors()
541 LiveRegGens[I->getReg()] = SU; in ReleasePredecessors()
551 for (SDNode *Node = SU->getNode(); Node; Node = Node->getGluedNode()) in ReleasePredecessors()
559 CallSeqEndForStart[Def] = SU; in ReleasePredecessors()
563 LiveRegGens[CallResource] = SU; in ReleasePredecessors()
622 void ScheduleDAGRRList::AdvancePastStalls(SUnit *SU) { in AdvancePastStalls() argument
633 unsigned ReadyCycle = SU->getHeight(); in AdvancePastStalls()
644 if (SU->isCall) in AdvancePastStalls()
652 HazardRec->getHazardType(SU, -Stalls); in AdvancePastStalls()
664 void ScheduleDAGRRList::EmitNode(SUnit *SU) { in EmitNode() argument
669 if (!SU->getNode()) in EmitNode()
672 switch (SU->getNode()->getOpcode()) { in EmitNode()
674 assert(SU->getNode()->isMachineOpcode() && in EmitNode()
692 if (SU->isCall) { in EmitNode()
698 HazardRec->EmitInstruction(SU); in EmitNode()
701 static void resetVRegCycle(SUnit *SU);
706 void ScheduleDAGRRList::ScheduleNodeBottomUp(SUnit *SU) { in ScheduleNodeBottomUp() argument
708 DEBUG(SU->dump(this)); in ScheduleNodeBottomUp()
711 if (CurCycle < SU->getHeight()) in ScheduleNodeBottomUp()
712 DEBUG(dbgs() << " Height [" << SU->getHeight() in ScheduleNodeBottomUp()
720 SU->setHeightToAtLeast(CurCycle); in ScheduleNodeBottomUp()
723 EmitNode(SU); in ScheduleNodeBottomUp()
725 Sequence.push_back(SU); in ScheduleNodeBottomUp()
727 AvailableQueue->scheduledNode(SU); in ScheduleNodeBottomUp()
737 ReleasePredecessors(SU); in ScheduleNodeBottomUp()
740 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end(); in ScheduleNodeBottomUp()
743 if (I->isAssignedRegDep() && LiveRegDefs[I->getReg()] == SU) { in ScheduleNodeBottomUp()
754 if (LiveRegDefs[CallResource] == SU) in ScheduleNodeBottomUp()
755 for (const SDNode *SUNode = SU->getNode(); SUNode; in ScheduleNodeBottomUp()
767 resetVRegCycle(SU); in ScheduleNodeBottomUp()
769 SU->isScheduled = true; in ScheduleNodeBottomUp()
780 if (SU->getNode() && SU->getNode()->isMachineOpcode()) in ScheduleNodeBottomUp()
805 void ScheduleDAGRRList::UnscheduleNodeBottomUp(SUnit *SU) { in UnscheduleNodeBottomUp() argument
806 DEBUG(dbgs() << "*** Unscheduling [" << SU->getHeight() << "]: "); in UnscheduleNodeBottomUp()
807 DEBUG(SU->dump(this)); in UnscheduleNodeBottomUp()
809 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end(); in UnscheduleNodeBottomUp()
812 if (I->isAssignedRegDep() && SU == LiveRegGens[I->getReg()]){ in UnscheduleNodeBottomUp()
826 for (const SDNode *SUNode = SU->getNode(); SUNode; in UnscheduleNodeBottomUp()
831 LiveRegDefs[CallResource] = SU; in UnscheduleNodeBottomUp()
832 LiveRegGens[CallResource] = CallSeqEndForStart[SU]; in UnscheduleNodeBottomUp()
838 if (LiveRegGens[CallResource] == SU) in UnscheduleNodeBottomUp()
839 for (const SDNode *SUNode = SU->getNode(); SUNode; in UnscheduleNodeBottomUp()
851 for (auto &Succ : SU->Succs) { in UnscheduleNodeBottomUp()
858 LiveRegDefs[Reg] = SU; in UnscheduleNodeBottomUp()
865 for (auto &Succ2 : SU->Succs) { in UnscheduleNodeBottomUp()
873 if (SU->getHeight() < MinAvailableCycle) in UnscheduleNodeBottomUp()
874 MinAvailableCycle = SU->getHeight(); in UnscheduleNodeBottomUp()
876 SU->setHeightDirty(); in UnscheduleNodeBottomUp()
877 SU->isScheduled = false; in UnscheduleNodeBottomUp()
878 SU->isAvailable = true; in UnscheduleNodeBottomUp()
881 SU->isPending = true; in UnscheduleNodeBottomUp()
882 PendingQueue.push_back(SU); in UnscheduleNodeBottomUp()
885 AvailableQueue->push(SU); in UnscheduleNodeBottomUp()
887 AvailableQueue->unscheduledNode(SU); in UnscheduleNodeBottomUp()
903 SUnit *SU = *I; in RestoreHazardCheckerBottomUp() local
904 for (; SU->getHeight() > HazardCycle; ++HazardCycle) { in RestoreHazardCheckerBottomUp()
907 EmitNode(SU); in RestoreHazardCheckerBottomUp()
913 void ScheduleDAGRRList::BacktrackBottomUp(SUnit *SU, SUnit *BtSU) { in BacktrackBottomUp() argument
926 assert(!SU->isSucc(OldSU) && "Something is wrong!"); in BacktrackBottomUp()
935 static bool isOperandOf(const SUnit *SU, SDNode *N) { in isOperandOf() argument
936 for (const SDNode *SUNode = SU->getNode(); SUNode; in isOperandOf()
946 SUnit *ScheduleDAGRRList::CopyAndMoveSuccessors(SUnit *SU) { in CopyAndMoveSuccessors() argument
947 SDNode *N = SU->getNode(); in CopyAndMoveSuccessors()
951 if (SU->getNode()->getGluedNode()) in CopyAndMoveSuccessors()
979 DEBUG(dbgs() << "Unfolding SU #" << SU->NodeNum << "\n"); in CopyAndMoveSuccessors()
985 unsigned OldNumVals = SU->getNode()->getNumValues(); in CopyAndMoveSuccessors()
987 DAG->ReplaceAllUsesOfValueWith(SDValue(SU->getNode(), i), SDValue(N, i)); in CopyAndMoveSuccessors()
988 DAG->ReplaceAllUsesOfValueWith(SDValue(SU->getNode(), OldNumVals-1), in CopyAndMoveSuccessors()
1030 for (SDep &Pred : SU->Preds) { in CopyAndMoveSuccessors()
1038 for (SDep &Succ : SU->Succs) { in CopyAndMoveSuccessors()
1047 RemovePred(SU, Pred); in CopyAndMoveSuccessors()
1052 RemovePred(SU, Pred); in CopyAndMoveSuccessors()
1057 RemovePred(SU, Pred); in CopyAndMoveSuccessors()
1062 D.setSUnit(SU); in CopyAndMoveSuccessors()
1073 D.setSUnit(SU); in CopyAndMoveSuccessors()
1097 SU = NewSU; in CopyAndMoveSuccessors()
1100 DEBUG(dbgs() << " Duplicating SU #" << SU->NodeNum << "\n"); in CopyAndMoveSuccessors()
1101 NewSU = CreateClone(SU); in CopyAndMoveSuccessors()
1104 for (SDep &Pred : SU->Preds) in CopyAndMoveSuccessors()
1111 for (SDep &Succ : SU->Succs) { in CopyAndMoveSuccessors()
1119 D.setSUnit(SU); in CopyAndMoveSuccessors()
1126 AvailableQueue->updateNode(SU); in CopyAndMoveSuccessors()
1135 void ScheduleDAGRRList::InsertCopiesAndMoveSuccs(SUnit *SU, unsigned Reg, in InsertCopiesAndMoveSuccs() argument
1150 for (SDep &Succ : SU->Succs) { in InsertCopiesAndMoveSuccs()
1170 SDep FromDep(SU, SDep::Data, Reg); in InsertCopiesAndMoveSuccs()
1171 FromDep.setLatency(SU->Latency); in InsertCopiesAndMoveSuccs()
1177 AvailableQueue->updateNode(SU); in InsertCopiesAndMoveSuccs()
1210 static void CheckForLiveRegDef(SUnit *SU, unsigned Reg, in CheckForLiveRegDef() argument
1221 if (LiveRegDefs[*AliasI] == SU) continue; in CheckForLiveRegDef()
1232 static void CheckForLiveRegDefMasked(SUnit *SU, const uint32_t *RegMask, in CheckForLiveRegDefMasked() argument
1239 if (LiveRegDefs[i] == SU) continue; in CheckForLiveRegDefMasked()
1259 DelayForLiveRegsBottomUp(SUnit *SU, SmallVectorImpl<unsigned> &LRegs) { in DelayForLiveRegsBottomUp() argument
1268 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end(); in DelayForLiveRegsBottomUp()
1270 if (I->isAssignedRegDep() && LiveRegDefs[I->getReg()] != SU) in DelayForLiveRegsBottomUp()
1275 for (SDNode *Node = SU->getNode(); Node; Node = Node->getGluedNode()) { in DelayForLiveRegsBottomUp()
1295 CheckForLiveRegDef(SU, Reg, LiveRegDefs.get(), RegAdded, LRegs, TRI); in DelayForLiveRegsBottomUp()
1321 CheckForLiveRegDefMasked(SU, RegMask, in DelayForLiveRegsBottomUp()
1329 CheckForLiveRegDef(SU, *Reg, LiveRegDefs.get(), RegAdded, LRegs, TRI); in DelayForLiveRegsBottomUp()
1338 SUnit *SU = Interferences[i-1]; in releaseInterferences() local
1339 LRegsMapT::iterator LRegsPos = LRegsMap.find(SU); in releaseInterferences()
1345 SU->isPending = false; in releaseInterferences()
1349 if (SU->isAvailable && !SU->NodeQueueId) { in releaseInterferences()
1350 DEBUG(dbgs() << " Repushing SU #" << SU->NodeNum << '\n'); in releaseInterferences()
1351 AvailableQueue->push(SU); in releaseInterferences()
1508 SUnit *SU = PickNodeToScheduleBottomUp(); in ListScheduleBottomUp() local
1510 AdvancePastStalls(SU); in ListScheduleBottomUp()
1512 ScheduleNodeBottomUp(SU); in ListScheduleBottomUp()
1540 bool isReady(SUnit* SU, unsigned CurCycle) const { return true; } in isReady()
1596 bool isReady(SUnit *SU, unsigned CurCycle) const;
1613 bool isReady(SUnit *SU, unsigned CurCycle) const;
1678 void addNode(const SUnit *SU) override;
1680 void updateNode(const SUnit *SU) override;
1688 unsigned getNodePriority(const SUnit *SU) const;
1690 unsigned getNodeOrdering(const SUnit *SU) const { in getNodeOrdering()
1691 if (!SU->getNode()) return 0; in getNodeOrdering()
1693 return SU->getNode()->getIROrder(); in getNodeOrdering()
1704 void remove(SUnit *SU) override { in remove() argument
1706 assert(SU->NodeQueueId != 0 && "Not in queue!"); in remove()
1708 SU); in remove()
1712 SU->NodeQueueId = 0; in remove()
1719 bool HighRegPressure(const SUnit *SU) const;
1721 bool MayReduceRegPressure(SUnit *SU) const;
1723 int RegPressureDiff(SUnit *SU, unsigned &LiveUses) const;
1725 void scheduledNode(SUnit *SU) override;
1727 void unscheduledNode(SUnit *SU) override;
1730 bool canClobber(const SUnit *SU, const SUnit *Op);
1797 SUnit *SU = popFromQueue(DumpQueue, DumpPicker, scheduleDAG); in dump() local
1798 dbgs() << "Height " << SU->getHeight() << ": "; in dump()
1799 SU->dump(DAG); in dump()
1839 CalcNodeSethiUllmanNumber(const SUnit *SU, std::vector<unsigned> &SUNumbers) { in CalcNodeSethiUllmanNumber() argument
1840 unsigned &SethiUllmanNumber = SUNumbers[SU->NodeNum]; in CalcNodeSethiUllmanNumber()
1845 for (const SDep &Pred : SU->Preds) { in CalcNodeSethiUllmanNumber()
1869 for (const SUnit &SU : *SUnits) in CalculateSethiUllmanNumbers()
1870 CalcNodeSethiUllmanNumber(&SU, SethiUllmanNumbers); in CalculateSethiUllmanNumbers()
1873 void RegReductionPQBase::addNode(const SUnit *SU) { in addNode() argument
1877 CalcNodeSethiUllmanNumber(SU, SethiUllmanNumbers); in addNode()
1880 void RegReductionPQBase::updateNode(const SUnit *SU) { in updateNode() argument
1881 SethiUllmanNumbers[SU->NodeNum] = 0; in updateNode()
1882 CalcNodeSethiUllmanNumber(SU, SethiUllmanNumbers); in updateNode()
1887 unsigned RegReductionPQBase::getNodePriority(const SUnit *SU) const { in getNodePriority()
1888 assert(SU->NodeNum < SethiUllmanNumbers.size()); in getNodePriority()
1889 unsigned Opc = SU->getNode() ? SU->getNode()->getOpcode() : 0; in getNodePriority()
1900 if (SU->NumSuccs == 0 && SU->NumPreds != 0) in getNodePriority()
1907 if (SU->NumPreds == 0 && SU->NumSuccs != 0) in getNodePriority()
1912 return SethiUllmanNumbers[SU->NodeNum]; in getNodePriority()
1914 unsigned Priority = SethiUllmanNumbers[SU->NodeNum]; in getNodePriority()
1915 if (SU->isCallOp) { in getNodePriority()
1917 int NP = (int)Priority - SU->getNode()->getNumValues(); in getNodePriority()
1942 bool RegReductionPQBase::HighRegPressure(const SUnit *SU) const { in HighRegPressure()
1946 for (const SDep &Pred : SU->Preds) { in HighRegPressure()
1967 bool RegReductionPQBase::MayReduceRegPressure(SUnit *SU) const { in MayReduceRegPressure()
1968 const SDNode *N = SU->getNode(); in MayReduceRegPressure()
1970 if (!N->isMachineOpcode() || !SU->NumSuccs) in MayReduceRegPressure()
1992 int RegReductionPQBase::RegPressureDiff(SUnit *SU, unsigned &LiveUses) const { in RegPressureDiff() argument
1995 for (const SDep &Pred : SU->Preds) { in RegPressureDiff()
2014 const SDNode *N = SU->getNode(); in RegPressureDiff()
2016 if (!N || !N->isMachineOpcode() || !SU->NumSuccs) in RegPressureDiff()
2031 void RegReductionPQBase::scheduledNode(SUnit *SU) { in scheduledNode() argument
2035 if (!SU->getNode()) in scheduledNode()
2038 for (const SDep &Pred : SU->Preds) { in scheduledNode()
2079 int SkipRegDefs = (int)SU->NumRegDefsLeft; in scheduledNode()
2080 for (ScheduleDAGSDNodes::RegDefIter RegDefPos(SU, scheduleDAG); in scheduledNode()
2089 DEBUG(dbgs() << " SU(" << SU->NodeNum << ") has too many regdefs\n"); in scheduledNode()
2099 void RegReductionPQBase::unscheduledNode(SUnit *SU) { in unscheduledNode() argument
2103 const SDNode *N = SU->getNode(); in unscheduledNode()
2119 for (const SDep &Pred : SU->Preds) { in unscheduledNode()
2163 if (SU->NumSuccs && N->isMachineOpcode()) { in unscheduledNode()
2185 static unsigned closestSucc(const SUnit *SU) { in closestSucc() argument
2187 for (const SDep &Succ : SU->Succs) { in closestSucc()
2203 static unsigned calcMaxScratches(const SUnit *SU) { in calcMaxScratches() argument
2205 for (const SDep &Pred : SU->Preds) { in calcMaxScratches()
2214 static bool hasOnlyLiveInOpers(const SUnit *SU) { in hasOnlyLiveInOpers() argument
2216 for (const SDep &Pred : SU->Preds) { in hasOnlyLiveInOpers()
2236 static bool hasOnlyLiveOutUses(const SUnit *SU) { in hasOnlyLiveOutUses() argument
2238 for (const SDep &Succ : SU->Succs) { in hasOnlyLiveOutUses()
2264 static void initVRegCycle(SUnit *SU) { in initVRegCycle() argument
2268 if (!hasOnlyLiveInOpers(SU) || !hasOnlyLiveOutUses(SU)) in initVRegCycle()
2271 DEBUG(dbgs() << "VRegCycle: SU(" << SU->NodeNum << ")\n"); in initVRegCycle()
2273 SU->isVRegCycle = true; in initVRegCycle()
2275 for (const SDep &Pred : SU->Preds) { in initVRegCycle()
2283 static void resetVRegCycle(SUnit *SU) { in resetVRegCycle() argument
2284 if (!SU->isVRegCycle) in resetVRegCycle()
2287 for (const SDep &Pred : SU->Preds) { in resetVRegCycle()
2300 static bool hasVRegCycleUse(const SUnit *SU) { in hasVRegCycleUse() argument
2302 if (SU->isVRegCycle) in hasVRegCycleUse()
2305 for (const SDep &Pred : SU->Preds) { in hasVRegCycleUse()
2309 DEBUG(dbgs() << " VReg cycle use: SU (" << SU->NodeNum << ")\n"); in hasVRegCycleUse()
2319 static bool BUHasStall(SUnit *SU, int Height, RegReductionPQBase *SPQ) { in BUHasStall() argument
2321 if (SPQ->getHazardRec()->getHazardType(SU, 0) in BUHasStall()
2511 bool hybrid_ls_rr_sort::isReady(SUnit *SU, unsigned CurCycle) const { in isReady() argument
2514 if (SPQ->MayReduceRegPressure(SU)) return true; in isReady()
2516 if (SU->getHeight() > (CurCycle + ReadyDelay)) return false; in isReady()
2518 if (SPQ->getHazardRec()->getHazardType(SU, -ReadyDelay) in isReady()
2558 bool ilp_ls_rr_sort::isReady(SUnit *SU, unsigned CurCycle) const { in isReady() argument
2559 if (SU->getHeight() > CurCycle) return false; in isReady()
2561 if (SPQ->getHazardRec()->getHazardType(SU, 0) in isReady()
2568 static bool canEnableCoalescing(SUnit *SU) { in canEnableCoalescing() argument
2569 unsigned Opc = SU->getNode() ? SU->getNode()->getOpcode() : 0; in canEnableCoalescing()
2582 if (SU->NumPreds == 0 && SU->NumSuccs != 0) in canEnableCoalescing()
2664 for (SUnit &SU : sunits) in initNodes()
2665 initVRegCycle(&SU); in initNodes()
2672 bool RegReductionPQBase::canClobber(const SUnit *SU, const SUnit *Op) { in canClobber() argument
2673 if (SU->isTwoAddress) { in canClobber()
2674 unsigned Opc = SU->getNode()->getMachineOpcode(); in canClobber()
2680 SDNode *DU = SU->getNode()->getOperand(i).getNode(); in canClobber()
2693 static bool canClobberReachingPhysRegUse(const SUnit *DepSU, const SUnit *SU, in canClobberReachingPhysRegUse() argument
2698 = TII->get(SU->getNode()->getMachineOpcode()).getImplicitDefs(); in canClobberReachingPhysRegUse()
2699 const uint32_t *RegMask = getNodeRegMask(SU->getNode()); in canClobberReachingPhysRegUse()
2703 for (const SDep &Succ : SU->Succs) { in canClobberReachingPhysRegUse()
2729 static bool canClobberPhysRegDefs(const SUnit *SuccSU, const SUnit *SU, in canClobberPhysRegDefs() argument
2736 for (const SDNode *SUNode = SU->getNode(); SUNode; in canClobberPhysRegDefs()
2799 for (SUnit &SU : *SUnits) { in PrescheduleNodesWithMultipleUses()
2803 if (SU.NumSuccs != 0) in PrescheduleNodesWithMultipleUses()
2806 if (SU.NumPreds != 1) in PrescheduleNodesWithMultipleUses()
2810 if (SDNode *N = SU.getNode()) in PrescheduleNodesWithMultipleUses()
2818 for (const SDep &Pred : SU.Preds) in PrescheduleNodesWithMultipleUses()
2834 if (SDNode *N = SU.getNode()) in PrescheduleNodesWithMultipleUses()
2843 if (PredSuccSU == &SU) continue; in PrescheduleNodesWithMultipleUses()
2849 if (SU.hasPhysRegClobbers && PredSuccSU->hasPhysRegDefs) in PrescheduleNodesWithMultipleUses()
2850 if (canClobberPhysRegDefs(PredSuccSU, &SU, TII, TRI)) in PrescheduleNodesWithMultipleUses()
2853 if (scheduleDAG->IsReachable(&SU, PredSuccSU)) in PrescheduleNodesWithMultipleUses()
2859 DEBUG(dbgs() << " Prescheduling SU #" << SU.NodeNum in PrescheduleNodesWithMultipleUses()
2866 if (SuccSU != &SU) { in PrescheduleNodesWithMultipleUses()
2869 scheduleDAG->AddPred(&SU, Edge); in PrescheduleNodesWithMultipleUses()
2870 Edge.setSUnit(&SU); in PrescheduleNodesWithMultipleUses()
2887 for (SUnit &SU : *SUnits) { in AddPseudoTwoAddrDeps()
2888 if (!SU.isTwoAddress) in AddPseudoTwoAddrDeps()
2891 SDNode *Node = SU.getNode(); in AddPseudoTwoAddrDeps()
2892 if (!Node || !Node->isMachineOpcode() || SU.getNode()->getGluedNode()) in AddPseudoTwoAddrDeps()
2895 bool isLiveOut = hasOnlyLiveOutUses(&SU); in AddPseudoTwoAddrDeps()
2903 SDNode *DU = SU.getNode()->getOperand(j).getNode(); in AddPseudoTwoAddrDeps()
2913 if (SuccSU == &SU) in AddPseudoTwoAddrDeps()
2917 if (SuccSU->getHeight() < SU.getHeight() && in AddPseudoTwoAddrDeps()
2918 (SU.getHeight() - SuccSU->getHeight()) > 1) in AddPseudoTwoAddrDeps()
2934 if (SuccSU->hasPhysRegDefs && SU.hasPhysRegClobbers) { in AddPseudoTwoAddrDeps()
2935 if (canClobberPhysRegDefs(SuccSU, &SU, TII, TRI)) in AddPseudoTwoAddrDeps()
2945 if (!canClobberReachingPhysRegUse(SuccSU, &SU, scheduleDAG, TII, TRI) && in AddPseudoTwoAddrDeps()
2948 (!SU.isCommutable && SuccSU->isCommutable)) && in AddPseudoTwoAddrDeps()
2949 !scheduleDAG->IsReachable(SuccSU, &SU)) { in AddPseudoTwoAddrDeps()
2951 << SU.NodeNum << " to SU #" << SuccSU->NodeNum << "\n"); in AddPseudoTwoAddrDeps()
2952 scheduleDAG->AddPred(&SU, SDep(SuccSU, SDep::Artificial)); in AddPseudoTwoAddrDeps()