diff options
Diffstat (limited to 'src/passes/RemoveUnusedBrs.cpp')
-rw-r--r-- | src/passes/RemoveUnusedBrs.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/passes/RemoveUnusedBrs.cpp b/src/passes/RemoveUnusedBrs.cpp index 44549f68d..32f7bd48a 100644 --- a/src/passes/RemoveUnusedBrs.cpp +++ b/src/passes/RemoveUnusedBrs.cpp @@ -757,6 +757,12 @@ struct RemoveUnusedBrs : public WalkerPass<PostWalker<RemoveUnusedBrs>> { replaceCurrent(loop); worked = true; } else if (auto* iff = curr->list[0]->dynCast<If>()) { + if (iff->condition->type == Type::unreachable) { + // The block result type may not be compatible with the arm result + // types since the unreachable If can satisfy any type of block. + // Just leave this for DCE. + return; + } // The label can't be used in the condition. if (BranchUtils::BranchSeeker::count(iff->condition, curr->name) == 0) { |