Fix bug: SCCP/2003-06-24-OverdefinedPHIValue.ll
authorChris Lattner <sabre@nondot.org>
Tue, 24 Jun 2003 20:29:52 +0000 (20:29 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 24 Jun 2003 20:29:52 +0000 (20:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6883 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/SCCP.cpp

index 4463a7fc444e56e517c6f8fb8e004ccfde6f91c4..df55037c520b30632b2f0b80e74a52724db0bf81 100644 (file)
@@ -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!