Index: src/IceCfgNode.cpp |
diff --git a/src/IceCfgNode.cpp b/src/IceCfgNode.cpp |
index a87642d14c78a72370a6cd4393dfd8c3bc3141a0..f49a2171ae6e0472d1d67dd270ec16d863645f31 100644 |
--- a/src/IceCfgNode.cpp |
+++ b/src/IceCfgNode.cpp |
@@ -106,8 +106,11 @@ void CfgNode::validatePhis() { |
break; |
} |
} |
- if (!Found) |
- llvm::report_fatal_error("Phi error: label for bad incoming edge"); |
+ if (!Found) { |
+ // Predecessor was unreachable, so if (impossibly) the control flow |
+ // enters from that predecessor, the value should be zero. |
+ Phi->clearOperandForTarget(Label); |
+ } |
} |
for (CfgNode *InNode : getInEdges()) { |
bool Found = false; |