/art/compiler/optimizing/ |
D | dead_code_elimination.cc | 23 static void MarkReachableBlocks(HBasicBlock* block, ArenaBitVector* visited) { in MarkReachableBlocks() argument 24 int block_id = block->GetBlockId(); in MarkReachableBlocks() 30 HInstruction* last_instruction = block->GetLastInstruction(); in MarkReachableBlocks() 44 for (size_t i = 0, e = block->GetSuccessors().Size(); i < e; ++i) { in MarkReachableBlocks() 45 MarkReachableBlocks(block->GetSuccessors().Get(i), visited); in MarkReachableBlocks() 50 static void MarkLoopHeadersContaining(const HBasicBlock& block, ArenaBitVector* set) { in MarkLoopHeadersContaining() argument 51 for (HLoopInformationOutwardIterator it(block); !it.Done(); it.Advance()) { in MarkLoopHeadersContaining() 56 void HDeadCodeElimination::MaybeRecordDeadBlock(HBasicBlock* block) { in MaybeRecordDeadBlock() argument 59 block->GetPhis().CountSize() + block->GetInstructions().CountSize()); in MaybeRecordDeadBlock() 76 HBasicBlock* block = it.Current(); in RemoveDeadBlocks() local [all …]
|
D | side_effects_analysis.cc | 29 HBasicBlock* block = it.Current(); in Run() local 30 SideEffects effects = GetBlockEffects(block); in Run() 32 if (block->IsLoopHeader()) { in Run() 33 effects = GetLoopEffects(block); in Run() 41 HBasicBlock* block = it.Current(); in Run() local 45 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done(); in Run() 54 block_effects_.Put(block->GetBlockId(), effects); in Run() 56 if (block->IsLoopHeader()) { in Run() 58 UpdateLoopEffects(block->GetLoopInformation(), effects); in Run() 59 HBasicBlock* pre_header = block->GetLoopInformation()->GetPreHeader(); in Run() [all …]
|
D | ssa_liveness_analysis.cc | 46 static void AddToListForLinearization(GrowableArray<HBasicBlock*>* worklist, HBasicBlock* block) { in AddToListForLinearization() argument 48 HLoopInformation* block_loop = block->GetLoopInformation(); in AddToListForLinearization() 59 worklist->InsertAt(insert_at, block); in AddToListForLinearization() 75 HBasicBlock* block = it.Current(); in LinearizeGraph() local 76 size_t number_of_forward_predecessors = block->GetPredecessors().Size(); in LinearizeGraph() 77 if (block->IsLoopHeader()) { in LinearizeGraph() 78 number_of_forward_predecessors -= block->GetLoopInformation()->NumberOfBackEdges(); in LinearizeGraph() 80 forward_predecessors.Put(block->GetBlockId(), number_of_forward_predecessors); in LinearizeGraph() 117 HBasicBlock* block = it.Current(); in NumberInstructions() local 118 block->SetLifetimeStart(lifetime_position); in NumberInstructions() [all …]
|
D | gvn_test.cc | 39 HBasicBlock* block = new (&allocator) HBasicBlock(graph); in TEST() local 40 graph->AddBlock(block); in TEST() 41 entry->AddSuccessor(block); in TEST() 43 block->AddInstruction( in TEST() 46 block->AddInstruction( in TEST() 49 HInstruction* to_remove = block->GetLastInstruction(); in TEST() 50 block->AddInstruction( in TEST() 53 HInstruction* different_offset = block->GetLastInstruction(); in TEST() 55 block->AddInstruction(new (&allocator) HInstanceFieldSet( in TEST() 57 block->AddInstruction( in TEST() [all …]
|
D | boolean_simplifier.cc | 21 void HBooleanSimplifier::TryRemovingNegatedCondition(HBasicBlock* block) { in TryRemovingNegatedCondition() argument 22 DCHECK(block->EndsWithIf()); in TryRemovingNegatedCondition() 25 HIf* if_instruction = block->GetLastInstruction()->AsIf(); in TryRemovingNegatedCondition() 33 block->SwapSuccessors(); in TryRemovingNegatedCondition() 101 void HBooleanSimplifier::TryRemovingBooleanSelection(HBasicBlock* block) { in TryRemovingBooleanSelection() argument 102 DCHECK(block->EndsWithIf()); in TryRemovingBooleanSelection() 105 HIf* if_instruction = block->GetLastInstruction()->AsIf(); in TryRemovingBooleanSelection() 126 block->InsertInstructionBefore(replacement, if_instruction); in TryRemovingBooleanSelection() 141 block->MergeWith(false_block); in TryRemovingBooleanSelection() 142 block->MergeWith(merge_block); in TryRemovingBooleanSelection() [all …]
|
D | nodes.cc | 27 void HGraph::AddBlock(HBasicBlock* block) { in AddBlock() argument 28 block->SetBlockId(blocks_.Size()); in AddBlock() 29 blocks_.Add(block); in AddBlock() 56 HBasicBlock* block = blocks_.Get(i); in RemoveInstructionsAsUsersFromDeadBlocks() local 57 DCHECK(block->GetPhis().IsEmpty()) << "Phis are not inserted at this stage"; in RemoveInstructionsAsUsersFromDeadBlocks() 58 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { in RemoveInstructionsAsUsersFromDeadBlocks() 68 HBasicBlock* block = blocks_.Get(i); in RemoveDeadBlocks() local 70 for (size_t j = 0; j < block->GetSuccessors().Size(); ++j) { in RemoveDeadBlocks() 71 block->GetSuccessors().Get(j)->RemovePredecessor(block); in RemoveDeadBlocks() 80 void HGraph::VisitBlockForBackEdges(HBasicBlock* block, in VisitBlockForBackEdges() argument [all …]
|
D | graph_test.cc | 40 HBasicBlock* block = new (allocator) HBasicBlock(graph); in createGotoBlock() local 41 graph->AddBlock(block); in createGotoBlock() 43 block->AddInstruction(got); in createGotoBlock() 44 return block; in createGotoBlock() 48 HBasicBlock* block = createGotoBlock(graph, allocator); in createEntryBlock() local 49 graph->SetEntryBlock(block); in createEntryBlock() 50 return block; in createEntryBlock() 54 HBasicBlock* block = new (allocator) HBasicBlock(graph); in createReturnBlock() local 55 graph->AddBlock(block); in createReturnBlock() 57 block->AddInstruction(return_instr); in createReturnBlock() [all …]
|
D | ssa_builder.cc | 43 void VisitBasicBlock(HBasicBlock* block); 120 void DeadPhiHandling::VisitBasicBlock(HBasicBlock* block) { in VisitBasicBlock() argument 121 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) { in VisitBasicBlock() 125 if (block->IsLoopHeader()) { in VisitBasicBlock() 241 HBasicBlock* block = loop_headers_.Get(i); in BuildSsa() local 242 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) { in BuildSsa() 244 for (size_t pred = 0; pred < block->GetPredecessors().Size(); pred++) { in BuildSsa() 245 HInstruction* input = ValueOfLocal(block->GetPredecessors().Get(pred), phi->GetRegNumber()); in BuildSsa() 299 HBasicBlock* block = it.Current(); in BuildSsa() local 300 for (HInstructionIterator it_phis(block->GetPhis()); !it_phis.Done(); it_phis.Advance()) { in BuildSsa() [all …]
|
D | pretty_printer.h | 71 void VisitBasicBlock(HBasicBlock* block) OVERRIDE { in VisitBasicBlock() argument 73 PrintInt(block->GetBlockId()); in VisitBasicBlock() 74 const GrowableArray<HBasicBlock*>& predecessors = block->GetPredecessors(); in VisitBasicBlock() 83 const GrowableArray<HBasicBlock*>& successors = block->GetSuccessors(); in VisitBasicBlock() 93 HGraphVisitor::VisitBasicBlock(block); in VisitBasicBlock() 125 void VisitBasicBlock(HBasicBlock* block) OVERRIDE { in VisitBasicBlock() argument 126 current_block_ = block; in VisitBasicBlock() 127 HPrettyPrinter::VisitBasicBlock(block); in VisitBasicBlock()
|
D | graph_visualizer.cc | 108 void PrintPredecessors(HBasicBlock* block) { in PrintPredecessors() argument 111 for (size_t i = 0, e = block->GetPredecessors().Size(); i < e; ++i) { in PrintPredecessors() 112 HBasicBlock* predecessor = block->GetPredecessors().Get(i); in PrintPredecessors() 118 void PrintSuccessors(HBasicBlock* block) { in PrintSuccessors() argument 121 for (size_t i = 0, e = block->GetSuccessors().Size(); i < e; ++i) { in PrintSuccessors() 122 HBasicBlock* successor = block->GetSuccessors().Get(i); in PrintSuccessors() 296 void VisitBasicBlock(HBasicBlock* block) OVERRIDE { in VisitBasicBlock() argument 298 PrintProperty("name", "B", block->GetBlockId()); in VisitBasicBlock() 299 if (block->GetLifetimeStart() != kNoLifetime) { in VisitBasicBlock() 301 PrintInt("from_bci", block->GetLifetimeStart()); in VisitBasicBlock() [all …]
|
D | graph_checker.cc | 28 void GraphChecker::VisitBasicBlock(HBasicBlock* block) { in VisitBasicBlock() argument 29 current_block_ = block; in VisitBasicBlock() 32 const GrowableArray<HBasicBlock*>& predecessors = block->GetPredecessors(); in VisitBasicBlock() 44 if (p_successors.Get(j) == block) { in VisitBasicBlock() 52 block->GetBlockId(), p_count_in_block_predecessors, p->GetBlockId(), in VisitBasicBlock() 53 p->GetBlockId(), block_count_in_p_successors, block->GetBlockId())); in VisitBasicBlock() 58 const GrowableArray<HBasicBlock*>& successors = block->GetSuccessors(); in VisitBasicBlock() 70 if (s_predecessors.Get(j) == block) { in VisitBasicBlock() 78 block->GetBlockId(), s_count_in_block_successors, s->GetBlockId(), in VisitBasicBlock() 79 s->GetBlockId(), block_count_in_s_predecessors, block->GetBlockId())); in VisitBasicBlock() [all …]
|
D | ssa_builder.h | 61 GrowableArray<HInstruction*>* GetLocalsFor(HBasicBlock* block) { in GetLocalsFor() argument 62 GrowableArray<HInstruction*>* locals = locals_for_.Get(block->GetBlockId()); in GetLocalsFor() 67 locals_for_.Put(block->GetBlockId(), locals); in GetLocalsFor() 72 HInstruction* ValueOfLocal(HBasicBlock* block, size_t local); 74 void VisitBasicBlock(HBasicBlock* block);
|
D | constant_folding.cc | 48 HBasicBlock* block = it.Current(); in Run() local 52 for (HInstructionIterator inst_it(block->GetInstructions()); in Run() 152 HBasicBlock* block = instruction->GetBlock(); in VisitRem() local 161 block->RemoveInstruction(instruction); in VisitRem() 177 block->RemoveInstruction(instruction); in VisitRem() 196 HBasicBlock* block = instruction->GetBlock(); in VisitSub() local 210 block->RemoveInstruction(instruction); in VisitSub() 225 HBasicBlock* block = instruction->GetBlock(); in VisitXor() local 227 block->RemoveInstruction(instruction); in VisitXor()
|
D | licm.cc | 22 static bool IsPhiOf(HInstruction* instruction, HBasicBlock* block) { in IsPhiOf() argument 23 return instruction->IsPhi() && instruction->GetBlock() == block; in IsPhiOf() 87 HBasicBlock* block = it.Current(); in Run() local 88 if (!block->IsLoopHeader()) { in Run() 93 HLoopInformation* loop_info = block->GetLoopInformation(); in Run() 94 SideEffects loop_effects = side_effects_.GetLoopEffects(block); in Run()
|
D | ssa_phi_elimination.cc | 29 HBasicBlock* block = it.Current(); in MarkDeadPhis() local 30 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) { in MarkDeadPhis() 64 HBasicBlock* block = it.Current(); in EliminateDeadPhis() local 65 HInstruction* current = block->GetFirstPhi(); in EliminateDeadPhis() 93 block->RemovePhi(phi, /*ensure_safety=*/ false); in EliminateDeadPhis() 103 HBasicBlock* block = it.Current(); in Run() local 104 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) { in Run()
|
D | bounds_check_elimination_test.cc | 308 HBasicBlock* block = new (&allocator) HBasicBlock(graph); in TEST() local 309 graph->AddBlock(block); in TEST() 310 entry->AddSuccessor(block); in TEST() 318 block->AddInstruction(null_check); in TEST() 319 block->AddInstruction(array_length); in TEST() 320 block->AddInstruction(bounds_check6); in TEST() 321 block->AddInstruction(array_set); in TEST() 329 block->AddInstruction(null_check); in TEST() 330 block->AddInstruction(array_length); in TEST() 331 block->AddInstruction(bounds_check5); in TEST() [all …]
|
D | bounds_check_elimination.cc | 272 static bool EarlyExit(HBasicBlock* block, HLoopInformation* loop_info) { in EarlyExit() argument 273 DCHECK(loop_info->Contains(*block)); in EarlyExit() 274 if (block == loop_info->GetHeader()) { in EarlyExit() 278 const GrowableArray<HBasicBlock*>& successors = block->GetSuccessors(); in EarlyExit() 288 static bool DominatesAllBackEdges(HBasicBlock* block, HLoopInformation* loop_info) { in DominatesAllBackEdges() argument 291 if (!block->Dominates(back_edge)) { in DominatesAllBackEdges() 301 HBasicBlock* block = it_loop.Current(); in Run() local 302 DCHECK(block == induction_variable_->GetBlock()); in Run() 307 block = it_loop.Current(); in Run() 308 DCHECK(block->IsInLoop()); in Run() [all …]
|
D | instruction_simplifier.cc | 203 HBasicBlock* block = check->GetBlock(); in VisitSuspendCheck() local 205 if (block->IsEntryBlock()) return; in VisitSuspendCheck() 208 if (block->IsLoopHeader() && block->GetFirstInstruction() == check) { in VisitSuspendCheck() 209 DCHECK(block->GetLoopInformation()->GetSuspendCheck() == check); in VisitSuspendCheck() 215 block->RemoveInstruction(check); in VisitSuspendCheck() 223 HBasicBlock* block = equal->GetBlock(); in VisitEqual() local 229 block->RemoveInstruction(equal); in VisitEqual() 233 block->ReplaceAndRemoveInstructionWith( in VisitEqual() 234 equal, new (block->GetGraph()->GetArena()) HBooleanNot(input_value)); in VisitEqual() 246 HBasicBlock* block = not_equal->GetBlock(); in VisitNotEqual() local [all …]
|
D | gvn.cc | 316 void VisitBasicBlock(HBasicBlock* block); 341 void GlobalValueNumberer::VisitBasicBlock(HBasicBlock* block) { in VisitBasicBlock() argument 343 const GrowableArray<HBasicBlock*>& predecessors = block->GetPredecessors(); in VisitBasicBlock() 350 HBasicBlock* dominator = block->GetDominator(); in VisitBasicBlock() 353 DCHECK_EQ(dominator->GetSuccessors().Get(0), block); in VisitBasicBlock() 361 if (block->IsLoopHeader()) { in VisitBasicBlock() 362 DCHECK_EQ(block->GetDominator(), block->GetLoopInformation()->GetPreHeader()); in VisitBasicBlock() 363 set->Kill(side_effects_.GetLoopEffects(block)); in VisitBasicBlock() 375 sets_.Put(block->GetBlockId(), set); in VisitBasicBlock() 377 HInstruction* current = block->GetFirstInstruction(); in VisitBasicBlock()
|
D | register_allocator_test.cc | 473 HBasicBlock* block = new (allocator) HBasicBlock(graph); in BuildIfElseWithPhi() local 474 graph->AddBlock(block); in BuildIfElseWithPhi() 475 entry->AddSuccessor(block); in BuildIfElseWithPhi() 479 block->AddInstruction(test); in BuildIfElseWithPhi() 480 block->AddInstruction(new (allocator) HIf(test)); in BuildIfElseWithPhi() 488 block->AddSuccessor(then); in BuildIfElseWithPhi() 489 block->AddSuccessor(else_); in BuildIfElseWithPhi() 603 HBasicBlock* block = new (allocator) HBasicBlock(graph); in BuildFieldReturn() local 604 graph->AddBlock(block); in BuildFieldReturn() 605 entry->AddSuccessor(block); in BuildFieldReturn() [all …]
|
D | code_generator.cc | 147 HBasicBlock* block = block_order_->Get(i); in GetNextBlockToEmit() local 148 if (!block->IsSingleGoto()) { in GetNextBlockToEmit() 149 return block; in GetNextBlockToEmit() 155 HBasicBlock* CodeGenerator::FirstNonEmptyBlock(HBasicBlock* block) const { in FirstNonEmptyBlock() 156 while (block->IsSingleGoto()) { in FirstNonEmptyBlock() 157 block = block->GetSuccessors().Get(0); in FirstNonEmptyBlock() 159 return block; in FirstNonEmptyBlock() 169 HBasicBlock* block = block_order_->Get(current_block_index_); in CompileInternal() local 173 if (block->IsSingleGoto()) continue; in CompileInternal() 174 Bind(block); in CompileInternal() [all …]
|
D | reference_type_propagation.h | 51 void VisitBasicBlock(HBasicBlock* block); 56 void BoundTypeForIfNotNull(HBasicBlock* block); 57 void BoundTypeForIfInstanceOf(HBasicBlock* block);
|
/art/test/435-try-finally-without-catch/ |
D | info.txt | 2 instructions with a `finally' clause but without any `catch' block, 6 block and whose result is assigned to a local value, it is smart 11 still emit a block with the exception catching and rethrowing 14 This used to be a problem for a `try' block followed by a `finally' 15 clause but with no `catch' block: in that case, the generated Dex code 16 item would list zero catch block for this method (see 20 special block(s) related to `catch'-less `try' statement(s), the 21 optimizing compiler considered this (these) as dead block(s) and
|
/art/compiler/dex/ |
D | ssa_transformation.cc | 50 res = NeedsVisit(GetBasicBlock(sbi->block)); in NextUnvisitedSuccessor() 61 void MIRGraph::MarkPreOrder(BasicBlock* block) { in MarkPreOrder() argument 62 block->visited = true; in MarkPreOrder() 64 if (block->id != NullBasicBlockId) { in MarkPreOrder() 65 dfs_order_.push_back(block->id); in MarkPreOrder() 69 void MIRGraph::RecordDFSOrders(BasicBlock* block) { in RecordDFSOrders() argument 73 MarkPreOrder(block); in RecordDFSOrders() 74 succ.push_back(block); in RecordDFSOrders() 229 BasicBlock* succ_bb = GetBasicBlock(successor_block_info->block); in ComputeDominanceFrontier() 451 BasicBlock* succ_bb = GetBasicBlock(successor_block_info->block); in ComputeBlockLiveIns() [all …]
|
/art/test/504-regression-baseline-entry/ |
D | info.txt | 1 Regression test for the baseline compiler which required the entry block to fall 2 through to the next block.
|