diff options
| author | 2015-04-29 16:51:50 +0000 | |
|---|---|---|
| committer | 2015-04-29 16:51:50 +0000 | |
| commit | c1849c58ce2a35c37f19e75038e034df47815ecd (patch) | |
| tree | 4fc7867085ad15daa8e6e5eeef7077a74517917c /compiler/optimizing/dead_code_elimination.cc | |
| parent | 4c176ef5ecd5a28354b9f98e5bafb848b0399a63 (diff) | |
| parent | 0430fc9216dddf6a6967cfffd37dfa99d73c2c68 (diff) | |
am 0430fc92: Merge "ART: Fix loop information after dead code elimination"
* commit '0430fc9216dddf6a6967cfffd37dfa99d73c2c68':
ART: Fix loop information after dead code elimination
Diffstat (limited to 'compiler/optimizing/dead_code_elimination.cc')
| -rw-r--r-- | compiler/optimizing/dead_code_elimination.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/optimizing/dead_code_elimination.cc b/compiler/optimizing/dead_code_elimination.cc index 91cd60acce..cd427c5ed8 100644 --- a/compiler/optimizing/dead_code_elimination.cc +++ b/compiler/optimizing/dead_code_elimination.cc @@ -65,10 +65,13 @@ void HDeadCodeElimination::RemoveDeadBlocks() { for (HPostOrderIterator it(*graph_); !it.Done(); it.Advance()) { HBasicBlock* block = it.Current(); if (live_blocks.IsBitSet(block->GetBlockId())) { - continue; + // If this block is part of a loop that is being dismantled, we need to + // update its loop information. + block->UpdateLoopInformation(); + } else { + MaybeRecordDeadBlock(block); + block->DisconnectAndDelete(); } - MaybeRecordDeadBlock(block); - block->DisconnectAndDelete(); } // Connect successive blocks created by dead branches. Order does not matter. |