aboutsummaryrefslogtreecommitdiff
path: root/source/opt/dead_branch_elim_pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/opt/dead_branch_elim_pass.cpp')
-rw-r--r--source/opt/dead_branch_elim_pass.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/opt/dead_branch_elim_pass.cpp b/source/opt/dead_branch_elim_pass.cpp
index 0054f576..356dbcb3 100644
--- a/source/opt/dead_branch_elim_pass.cpp
+++ b/source/opt/dead_branch_elim_pass.cpp
@@ -346,6 +346,7 @@ bool DeadBranchElimPass::FixPhiNodesInLiveBlocks(
if (operands.size() == 4) {
// First input data operands is at index 2.
uint32_t replId = operands[2u].words[0];
+ context()->KillNamesAndDecorates(inst->result_id());
context()->ReplaceAllUsesWith(inst->result_id(), replId);
iter = context()->KillInst(&*inst);
} else {
@@ -419,6 +420,10 @@ bool DeadBranchElimPass::EraseDeadBlocks(
}
bool DeadBranchElimPass::EliminateDeadBranches(Function* func) {
+ if (func->IsDeclaration()) {
+ return false;
+ }
+
bool modified = false;
std::unordered_set<BasicBlock*> live_blocks;
modified |= MarkLiveBlocks(func, &live_blocks);