summaryrefslogtreecommitdiff
path: root/compiler/optimizing/dead_code_elimination.cc
diff options
context:
space:
mode:
author David Brazdil <dbrazdil@google.com> 2015-04-29 16:51:50 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2015-04-29 16:51:50 +0000
commitc1849c58ce2a35c37f19e75038e034df47815ecd (patch)
tree4fc7867085ad15daa8e6e5eeef7077a74517917c /compiler/optimizing/dead_code_elimination.cc
parent4c176ef5ecd5a28354b9f98e5bafb848b0399a63 (diff)
parent0430fc9216dddf6a6967cfffd37dfa99d73c2c68 (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.cc9
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.