From 867b7661cb27a57439c461545305a114efc4e001 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 24 Jun 2003 20:29:52 +0000 Subject: [PATCH] Fix bug: SCCP/2003-06-24-OverdefinedPHIValue.ll llvm-svn: 6883 --- lib/Transforms/Scalar/SCCP.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index 4463a7fc444..df55037c520 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -420,12 +420,13 @@ void SCCP::visitPHINode(PHINode &PN) { for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) { InstVal &IV = getValueState(PN.getIncomingValue(i)); if (IV.isUndefined()) continue; // Doesn't influence PHI node. - if (IV.isOverdefined()) { // PHI node becomes overdefined! - markOverdefined(&PN); - return; - } if (isEdgeFeasible(PN.getIncomingBlock(i), PN.getParent())) { + if (IV.isOverdefined()) { // PHI node becomes overdefined! + markOverdefined(&PN); + return; + } + if (OperandVal == 0) { // Grab the first value... OperandVal = IV.getConstant(); } else { // Another value is being merged in!