| 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;
|
|
|