diff options
Diffstat (limited to 'compiler/optimizing')
| -rw-r--r-- | compiler/optimizing/nodes.cc | 5 | ||||
| -rw-r--r-- | compiler/optimizing/nodes.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 47da9cc17c..2ece5a559c 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -1290,11 +1290,16 @@ void HGraph::DeleteDeadBlock(HBasicBlock* block) { block->RemovePhi(it.Current()->AsPhi()); } + if (block->IsExitBlock()) { + exit_block_ = nullptr; + } + reverse_post_order_.Delete(block); blocks_.Put(block->GetBlockId(), nullptr); } void HGraph::InlineInto(HGraph* outer_graph, HInvoke* invoke) { + DCHECK(HasExitBlock()) << "Unimplemented scenario"; if (GetBlocks().Size() == 3) { // Simple case of an entry block, a body block, and an exit block. // Put the body block's instruction into `invoke`'s block. diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 67c6b3c1d4..01870c36fa 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -155,6 +155,7 @@ class HGraph : public ArenaObject<kArenaAllocMisc> { HBasicBlock* GetEntryBlock() const { return entry_block_; } HBasicBlock* GetExitBlock() const { return exit_block_; } + bool HasExitBlock() const { return exit_block_ != nullptr; } void SetEntryBlock(HBasicBlock* block) { entry_block_ = block; } void SetExitBlock(HBasicBlock* block) { exit_block_ = block; } |