Lines Matching refs:predecessor

314   // Use `InsertBetween` to ensure the predecessor index and successor index of
349 HBasicBlock* predecessor = header->GetPredecessors()[pred];
350 if (!info->IsBackEdge(*predecessor)) {
351 predecessor->ReplaceSuccessor(header, pre_header);
358 // Make sure the first predecessor of a loop header is the incoming block.
362 HBasicBlock* predecessor = header->GetPredecessors()[pred];
363 if (!info->IsBackEdge(*predecessor)) {
365 header->predecessors_[0] = predecessor;
389 // Infer try membership from the first predecessor. Having simplified loops,
390 // the first predecessor can never be a back edge and therefore it must have
473 os << "predecessor: " << block->GetBlockId() << std::endl;
593 for (HBasicBlock* predecessor : block->GetPredecessors()) {
594 PopulateRecursive(predecessor);
628 // Visit all predecessors. If one predecessor is part of the loop, this
630 for (HBasicBlock* predecessor : block->GetPredecessors()) {
631 PopulateIrreducibleRecursive(predecessor, finalized);
632 if (!is_finalized && blocks_.IsBitSet(predecessor->GetBlockId())) {
1466 for (HBasicBlock* predecessor : GetPredecessors()) {
1467 new_block->predecessors_.push_back(predecessor);
1468 predecessor->successors_[predecessor->GetSuccessorIndexOf(this)] = new_block;
1712 // We need to do this before step (4) which destroys the predecessor list.
1736 // successors because catch phi inputs do not correspond to predecessor
1741 // The successor has just one predecessor left. Replace phis with the only
1775 for (HBasicBlock* predecessor : predecessors_) {
1777 DCHECK(!IsInLoop() || !GetLoopInformation()->IsBackEdge(*predecessor));
1779 HInstruction* last_instruction = predecessor->GetLastInstruction();
1782 // makes `predecessor` dead. Since DCE removes blocks in post order,
1784 // remaining handlers therefore must be live. We remove `predecessor` from
1787 while (predecessor->GetSuccessors().size() > 1) {
1788 HBasicBlock* handler = predecessor->GetSuccessors()[1];
1790 predecessor->RemoveSuccessor(handler);
1791 handler->RemovePredecessor(predecessor);
1795 predecessor->RemoveSuccessor(this);
1796 uint32_t num_pred_successors = predecessor->GetSuccessors().size();
1804 predecessor->RemoveInstruction(last_instruction);
1805 predecessor->AddInstruction(new (graph_->GetArena()) HGoto(last_instruction->GetDexPc()));
1807 // The predecessor has no remaining successors and therefore must be dead.
1810 predecessor->RemoveInstruction(last_instruction);
1824 // because the loop header's predecessor list has been destroyed in step (4).
1924 HBasicBlock* predecessor = GetPredecessors()[0];
1925 predecessor->ReplaceSuccessor(this, other);
2107 HBasicBlock* predecessor = to->GetPredecessors()[0];
2108 HInstruction* last = predecessor->GetLastInstruction();
2112 predecessor->AddInstruction(new (allocator) HGoto(last->GetDexPc()));
2113 predecessor->RemoveInstruction(last);
2121 for (HBasicBlock* predecessor : to->GetPredecessors()) {
2122 HInstruction* last = predecessor->GetLastInstruction();
2127 predecessor->AddInstruction(new (allocator) HGoto(last->GetDexPc()));
2128 predecessor->RemoveInstruction(last);