Lines Matching refs:Node
88 for (CfgNode *Node : getNodes()) {
91 InstCount += Node->getPhis().size();
92 for (Inst &I : Node->getInsts()) {
108 auto *Node = CfgNode::create(this, LabelIndex);
109 Nodes.push_back(Node);
110 return Node;
184 for (CfgNode *Node : Nodes) {
185 const std::string NodeAsmName = Node->getAsmName();
188 Node->profileExecutionCount(GlobalInits->back());
277 for (auto *Node : Nodes) {
280 assert(Node);
281 const auto &InEdges = Node->getInEdges();
282 for (auto &Instr : Node->getPhis()) {
294 for (CfgNode *Node : Nodes) {
295 Node->computeSuccessors();
309 CfgNode *Node = Nodes[Index];
310 assert(Node->getIndex() == (SizeT)Index);
311 for (CfgNode *Succ : Node->getOutEdges()) {
330 for (CfgNode *Node : Nodes)
331 Node->enforcePhiConsistency();
337 for (CfgNode *Node : Nodes)
338 Node->renumberInstructions();
339 // Make sure the entry node is the first node and therefore got the lowest
352 for (CfgNode *Node : Nodes)
353 Node->placePhiLoads();
359 for (CfgNode *Node : Nodes)
360 Node->placePhiStores();
365 for (CfgNode *Node : Nodes)
366 Node->deletePhis();
377 // This splits edges and appends new nodes to the end of the node list. This
423 // Keep track of where each node has been tentatively placed so that we can
426 for (CfgNode *Node : Nodes) {
428 // assert() statements before moving to the next node.
430 if (Node != getEntryNode() && Node->getInEdges().empty()) {
431 // The node has essentially been deleted since it is not a successor of
432 // any other node.
433 Unreachable.push_back(Node);
434 PlaceIndex[Node->getIndex()] = Unreachable.end();
435 Node->setNeedsPlacement(false);
438 if (!Node->needsPlacement()) {
440 Placed.push_back(Node);
441 PlaceIndex[Node->getIndex()] = Placed.end();
444 Node->setNeedsPlacement(false);
445 // Assume for now that the unplaced node is from edge-splitting and
447 // in-edge if the predecessor node was contracted). If this changes in
449 assert(Node->getInEdges().size() >= 1);
450 assert(Node->hasSingleOutEdge());
454 CfgNode *Succ = Node->getOutEdges().front();
457 Placed.insert(PlaceIndex[Succ->getIndex()], Node);
458 PlaceIndex[Node->getIndex()] = PlaceIndex[Succ->getIndex()];
463 CfgNode *Pred = Node->getInEdges().front();
466 // somehow turns out to be true, we just insert Node before
470 Placed.insert(PredPosition, Node);
471 PlaceIndex[Node->getIndex()] = PredPosition;
474 --PlaceIndex[Node->getIndex()];
475 assert(*PlaceIndex[Node->getIndex()] == Node);
481 for (CfgNode *Node : Placed)
482 Reordered.push_back(Node);
483 for (CfgNode *Node : Unreachable)
484 Reordered.push_back(Node);
490 void getRandomPostOrder(CfgNode *Node, BitVector &ToVisit,
493 assert(ToVisit[Node->getIndex()]);
494 ToVisit[Node->getIndex()] = false;
495 NodeList Outs = Node->getOutEdges();
502 PostOrder.push_back(Node);
516 // Traverse from entry node.
519 for (CfgNode *Node : Nodes)
520 if (ToVisit[Node->getIndex()])
521 Unreachable.push_back(Node);
525 for (CfgNode *Node : reverse_range(ReversedReachable))
526 Shuffled.push_back(Node);
527 for (CfgNode *Node : Unreachable)
528 Shuffled.push_back(Node);
544 // If variables have a single definition (in the node), CSE can work just
598 for (CfgNode *Node : getNodes()) {
618 for (Inst &Instr : Node->getInsts()) {
706 auto *Node = Nodes[NodeIndex];
707 CfgVector<std::reference_wrapper<Inst>> Insts(Node->getInsts().begin(),
708 Node->getInsts().end());
741 Node->getInsts().remove(Inst);
783 auto *Node = NodeStack.back();
785 auto NewNode = Node->shortCircuit();
788 NodeStack.push_back(Node);
789 Splits[Node->getIndex()].push_back(NewNode);
797 for (auto *Node : Nodes) {
798 if (Inserted.find(Node->getIndex()) != Inserted.end())
800 NodeList Stack{Node};
813 for (auto *Node : NewList) {
814 Node->resetIndex(NodeIndex++);
843 for (CfgNode *Node : getNodes()) {
846 auto Current = Node->getInsts().begin();
847 auto End = Node->getInsts().end();
873 auto &Insts = Node->getInsts();
880 auto *Assign = InstAssign::create(Node->getCfg(), NewVar, Pair.first);
888 InstAssign::create(Node->getCfg(), NewVar, ConstCache[Pair.first]);
1042 for (CfgNode *Node : Nodes) {
1043 if (Node == EntryNode)
1045 for (Inst &Instr : Node->getInsts()) {
1193 for (CfgNode *Node : getNodes()) {
1195 for (Inst &Instr : Node->getInsts()) {
1212 for (CfgNode *Node : Nodes)
1213 Node->doAddressOpt();
1429 for (CfgNode *Node : Nodes) {
1430 for (auto &Instr : Node->getInsts()) {
1528 for (CfgNode *Node : Nodes)
1529 Node->doNopInsertion(RNG);
1534 for (CfgNode *Node : Nodes)
1535 Node->genCode();
1542 for (CfgNode *Node : Nodes)
1543 if (Node->getHasReturn())
1544 getTarget()->addEpilog(Node);
1559 for (CfgNode *Node : Nodes)
1560 Node->livenessLightweight();
1577 for (CfgNode *Node : reverse_range(Nodes)) {
1578 if (NeedToProcess[Node->getIndex()]) {
1579 NeedToProcess[Node->getIndex()] = false;
1580 bool Changed = Node->liveness(getLiveness());
1584 for (CfgNode *Pred : Node->getInEdges())
1595 // Make a final pass over each node to delete dead instructions, collect the
1597 // node.
1598 for (CfgNode *Node : Nodes) {
1601 for (Inst &I : Node->getPhis()) {
1610 for (Inst &I : Node->getInsts()) {
1628 // the entry node is guaranteed to have the lowest instruction numbers.
1629 if (Node == getEntryNode()) {
1631 // Just in case the entry node somehow contains no instructions...
1635 // If this node somehow contains no instructions, don't bother trying to
1639 Node->livenessAddIntervals(getLiveness(), FirstInstNum, LastInstNum);
1651 for (CfgNode *Node : Nodes) {
1653 for (Inst &Instr : Node->getInsts()) {
1705 for (CfgNode *Node : Nodes) {
1706 Node->contractIfEmpty();
1791 for (CfgNode *Node : Nodes) {
1792 if (NeedSandboxing && Node->needsAlignment()) {
1796 Node->emit(this);
1807 for (CfgNode *Node : Nodes) {
1808 if (NeedSandboxing && Node->needsAlignment())
1810 Node->emitIAS(this);
1891 for (CfgNode *Node : Nodes)
1892 Node->dump(this);