Fix wrong assumption in RemoveInstructionsAsUsersFromDeadBlocks.
It can be called in a situation where dead blocks can have phis:
the DCE pass would re-build the dominator tree and RemoveInstructionsAsUsersFromDeadBlocks
used to assume there cannot be phis.
Test: 695-simplify-throws
Bug: 131174581
Change-Id: I853956482487a8c7c8fb99499aef318d099754e4
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc
index f7c16d1..1940d55 100644
--- a/compiler/optimizing/nodes.cc
+++ b/compiler/optimizing/nodes.cc
@@ -147,7 +147,9 @@
if (!visited.IsBitSet(i)) {
HBasicBlock* block = blocks_[i];
if (block == nullptr) continue;
- DCHECK(block->GetPhis().IsEmpty()) << "Phis are not inserted at this stage";
+ for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) {
+ RemoveAsUser(it.Current());
+ }
for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) {
RemoveAsUser(it.Current());
}