Home
last modified time | relevance | path

Searched refs:block (Results 1 – 25 of 75) sorted by relevance

123

/art/compiler/optimizing/
Ddead_code_elimination.cc23 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 …]
Dside_effects_analysis.cc29 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 …]
Dssa_liveness_analysis.cc46 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 …]
Dgvn_test.cc39 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 …]
Dboolean_simplifier.cc21 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 …]
Dnodes.cc27 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 …]
Dgraph_test.cc40 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 …]
Dssa_builder.cc43 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 …]
Dpretty_printer.h71 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()
Dgraph_visualizer.cc108 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 …]
Dgraph_checker.cc28 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 …]
Dssa_builder.h61 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);
Dconstant_folding.cc48 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()
Dlicm.cc22 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()
Dssa_phi_elimination.cc29 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()
Dbounds_check_elimination_test.cc308 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 …]
Dbounds_check_elimination.cc272 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 …]
Dinstruction_simplifier.cc203 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 …]
Dgvn.cc316 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()
Dregister_allocator_test.cc473 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 …]
Dcode_generator.cc147 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 …]
Dreference_type_propagation.h51 void VisitBasicBlock(HBasicBlock* block);
56 void BoundTypeForIfNotNull(HBasicBlock* block);
57 void BoundTypeForIfInstanceOf(HBasicBlock* block);
/art/test/435-try-finally-without-catch/
Dinfo.txt2 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/
Dssa_transformation.cc50 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/
Dinfo.txt1 Regression test for the baseline compiler which required the entry block to fall
2 through to the next block.

123