Searched refs:successor (Results 1 - 25 of 27) sorted by relevance

12

/art/compiler/optimizing/
H A Dlinear_order.cc109 // successor block are visited, the successor block is added in the worklist
119 for (HBasicBlock* successor : current->GetSuccessors()) {
120 int block_id = successor->GetBlockId();
123 AddToListForLinearization(&worklist, successor);
H A Ddead_code_elimination.cc80 for (HBasicBlock* successor : live_successors) {
82 if (!visited->IsBitSet(successor->GetBlockId())) {
83 visited->SetBit(successor->GetBlockId());
84 worklist.push_back(successor);
433 HBasicBlock* successor = block->GetSingleSuccessor(); local
434 if (successor->IsExitBlock() || successor->GetPredecessors().size() != 1u) {
437 DCHECK_LT(i, IndexOfElement(graph_->GetReversePostOrder(), successor));
438 block->MergeWith(successor);
442 // Reiterate on this block in case it can be merged with its new successor
[all...]
H A Dnodes.cc83 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local
84 uint32_t successor_id = successor->GetBlockId();
86 DCHECK(ContainsElement(worklist, successor));
87 successor->AddBackEdge(current);
91 worklist.push_back(successor);
162 // We only need to update the successor, which might be live.
163 for (HBasicBlock* successor : block->GetSuccessors()) {
164 successor->RemovePredecessor(block);
248 static bool UpdateDominatorOfSuccessor(HBasicBlock* block, HBasicBlock* successor) { argument
249 DCHECK(ContainsElement(block->GetSuccessors(), successor));
289 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local
347 SplitEdge(HBasicBlock* block, HBasicBlock* successor) argument
356 SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor) argument
573 HBasicBlock* successor = normal_successors[j]; local
2311 HBasicBlock* successor = GetSuccessors()[0]; local
[all...]
H A Dgraph_checker.cc168 for (HBasicBlock* successor : block->GetNormalSuccessors()) {
169 if (successor->IsCatchBlock()) {
170 AddError(StringPrintf("Catch block %d is a normal successor of block %d.",
171 successor->GetBlockId(),
175 for (HBasicBlock* successor : block->GetExceptionalSuccessors()) {
176 if (!successor->IsCatchBlock()) {
177 AddError(StringPrintf("Normal block %d is an exceptional successor of block %d.",
178 successor->GetBlockId(),
200 for (HBasicBlock* successor : block->GetNormalSuccessors()) {
201 if (successor
533 HBasicBlock* successor = ret->GetBlock()->GetSingleSuccessor(); local
543 HBasicBlock* successor = ret->GetBlock()->GetSingleSuccessor(); local
[all...]
H A Dssa_liveness_analysis_test.cc53 HBasicBlock* successor = new (GetAllocator()) HBasicBlock(graph); local
54 graph->AddBlock(successor);
55 block->AddSuccessor(successor);
56 return successor;
H A Dblock_builder.cc63 // Create the first block for the dex instructions, single successor of the entry block.
367 // the successor is not in the same TryItem.
374 HBasicBlock* successor = try_block->GetSuccessors()[i]; local
376 // If the successor is a try block, all of its predecessors must be
379 if (GetTryItem(successor, try_block_info) != nullptr) {
380 DCHECK_EQ(try_item, GetTryItem(successor, try_block_info));
386 new (allocator_) HTryBoundary(HTryBoundary::BoundaryKind::kExit, successor->GetDexPc());
387 graph_->SplitEdge(try_block, successor)->AddInstruction(try_exit);
H A Dssa_liveness_analysis.cc148 for (HBasicBlock* successor : block->GetSuccessors()) {
149 live_in->Union(GetLiveInSet(*successor));
150 if (successor->IsCatchBlock()) {
160 size_t phi_input_index = successor->GetPredecessorIndexOf(block);
161 for (HInstructionIterator phi_it(successor->GetPhis()); !phi_it.Done(); phi_it.Advance()) {
277 for (HBasicBlock* successor : block.GetSuccessors()) {
278 if (live_out->Union(GetLiveInSet(*successor))) {
H A Dloop_optimization_test.cc60 /** Adds a loop nest at given position before successor. */
61 HBasicBlock* AddLoop(HBasicBlock* position, HBasicBlock* successor) { argument
67 position->ReplaceSuccessor(successor, header);
69 header->AddSuccessor(successor);
H A Dsuperblock_cloner.cc158 // This flag reflects whether the original successor has at least one phi and this phi
160 // in the end all of the phis in the copy successor have the same number of inputs - the number
161 // of copy successor's predecessors.
252 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local
253 uint32_t successor_id = successor->GetBlockId();
259 DCHECK(ContainsElement(worklist, successor));
260 successor->AddBackEdgeWhileUpdating(current);
264 worklist.push_back(successor);
H A Dbounds_check_elimination.cc603 // and push the narrowed value range to `successor`.
605 HBasicBlock* successor, ValueRange* range) {
609 AssignRange(successor, instruction, range);
621 AssignRange(successor, instruction, existing_range->Narrow(range));
646 HBasicBlock* successor = nullptr; local
652 successor = instruction->IfTrueSuccessor();
654 successor = instruction->IfTrueSuccessor();
656 successor = instruction->IfFalseSuccessor();
660 successor = instruction->IfFalseSuccessor();
667 if (successor !
604 ApplyRangeFromComparison(HInstruction* instruction, HBasicBlock* basic_block, HBasicBlock* successor, ValueRange* range) argument
[all...]
H A Dcode_sinking.cc286 for (HBasicBlock* successor : block->GetSuccessors()) {
287 if (!post_dominated.IsBitSet(successor->GetBlockId())) {
H A Dgvn.cc359 // successor blocks.
425 // `block` is a direct successor of its dominator. No need to clone the
517 for (const HBasicBlock* successor : block->GetSuccessors()) {
518 if (!visited_blocks_.IsBitSet(successor->GetBlockId())) {
H A Dcode_generator_mips.h239 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor);
339 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_mips64.h236 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor);
325 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_x86.h209 // Generate code for the given suspend check. If not null, `successor`
212 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor);
295 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_x86_64.h206 // Generate code for the given suspend check. If not null, `successor`
209 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor);
280 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_arm64.cc427 SuspendCheckSlowPathARM64(HSuspendCheck* instruction, HBasicBlock* successor) argument
428 : SlowPathCodeARM64(instruction), successor_(successor) {}
2155 HBasicBlock* successor) {
2160 new (codegen_->GetScopedAllocator()) SuspendCheckSlowPathARM64(instruction, successor);
2163 if (successor != nullptr) {
2164 DCHECK(successor->IsLoopHeader());
2167 DCHECK_EQ(slow_path->GetSuccessor(), successor);
2174 if (successor == nullptr) {
2178 __ Cbz(temp, codegen_->GetLabelOf(successor));
2180 // slow_path will return to GetLabelOf(successor)
2154 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument
3509 HandleGoto(HInstruction* got, HBasicBlock* successor) argument
3554 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local
[all...]
H A Dcode_generator_arm64.h267 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor);
330 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_arm_vixl.h319 // Generate code for the given suspend check. If not null, `successor`
322 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor);
405 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dgraph_visualizer.cc265 for (HBasicBlock* successor : block->GetNormalSuccessors()) {
266 output_ << " \"B" << successor->GetBlockId() << "\" ";
H A Dcode_generator_arm_vixl.cc449 SuspendCheckSlowPathARMVIXL(HSuspendCheck* instruction, HBasicBlock* successor) argument
450 : SlowPathCodeARMVIXL(instruction), successor_(successor) {}
2805 void InstructionCodeGeneratorARMVIXL::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument
2806 if (successor->IsExitBlock()) {
2826 GenerateSuspendCheck(info->GetSuspendCheck(), successor);
2833 if (!codegen_->GoesToNextBlock(block, successor)) {
2834 __ B(codegen_->GetLabelOf(successor));
2851 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local
2852 if (!successor->IsExitBlock()) {
2853 HandleGoto(try_boundary, successor);
6747 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument
[all...]
H A Dcode_generator_mips64.cc302 SuspendCheckSlowPathMIPS64(HSuspendCheck* instruction, HBasicBlock* successor) argument
303 : SlowPathCodeMIPS64(instruction), successor_(successor) {}
1788 HBasicBlock* successor) {
1794 new (codegen_->GetScopedAllocator()) SuspendCheckSlowPathMIPS64(instruction, successor);
1797 if (successor != nullptr) {
1798 DCHECK(successor->IsLoopHeader());
1801 DCHECK_EQ(slow_path->GetSuccessor(), successor);
1808 if (successor == nullptr) {
1812 __ Beqzc(TMP, codegen_->GetLabelOf(successor));
1814 // slow_path will return to GetLabelOf(successor)
[all...]
H A Dcode_generator_x86.cc187 SuspendCheckSlowPathX86(HSuspendCheck* instruction, HBasicBlock* successor) argument
188 : SlowPathCode(instruction), successor_(successor) {}
1358 void InstructionCodeGeneratorX86::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument
1359 if (successor->IsExitBlock()) {
1375 GenerateSuspendCheck(info->GetSuspendCheck(), successor);
1382 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) {
1383 __ jmp(codegen_->GetLabelOf(successor));
1400 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local
1401 if (!successor->IsExitBlock()) {
1402 HandleGoto(try_boundary, successor);
5735 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument
[all...]
H A Dcode_generator_x86_64.cc143 SuspendCheckSlowPathX86_64(HSuspendCheck* instruction, HBasicBlock* successor) argument
144 : SlowPathCode(instruction), successor_(successor) {}
1456 void InstructionCodeGeneratorX86_64::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument
1457 if (successor->IsExitBlock()) {
1472 GenerateSuspendCheck(info->GetSuspendCheck(), successor);
1479 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) {
1480 __ jmp(codegen_->GetLabelOf(successor));
1497 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local
1498 if (!successor->IsExitBlock()) {
1499 HandleGoto(try_boundary, successor);
5182 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument
[all...]
H A Dnodes.h419 // Splits the edge between `block` and `successor` while preserving the
420 // indices in the predecessor/successor lists. If there are multiple edges
422 // Returns the new block which is empty and has the same dex pc as `successor`.
423 HBasicBlock* SplitEdge(HBasicBlock* block, HBasicBlock* successor);
425 void SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor);
1077 // Insert `this` between `predecessor` and `successor. This method
1079 // `predecessor` and `successor`.
1080 void InsertBetween(HBasicBlock* predecessor, HBasicBlock* successor) { argument
1081 size_t predecessor_index = successor->GetPredecessorIndexOf(predecessor);
1082 size_t successor_index = predecessor->GetSuccessorIndexOf(successor);
[all...]

Completed in 601 milliseconds

12