Factor code out into the Utils library
authorChris Lattner <sabre@nondot.org>
Fri, 19 Dec 2003 05:58:40 +0000 (05:58 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 19 Dec 2003 05:58:40 +0000 (05:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10530 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index 80ae224f5d9729f5571575a9d9d090d74da7376b..dad78ac81c69f660e1f445219009d90dbef14e97 100644 (file)
@@ -1906,29 +1906,9 @@ bool InstCombiner::transformConstExprCastCall(CallSite CS) {
 // PHINode simplification
 //
 Instruction *InstCombiner::visitPHINode(PHINode &PN) {
-  // If the PHI node only has one incoming value, eliminate the PHI node...
-  if (PN.getNumIncomingValues() == 1)
-    return ReplaceInstUsesWith(PN, PN.getIncomingValue(0));
-  
-  // Otherwise if all of the incoming values are the same for the PHI, replace
-  // the PHI node with the incoming value.
-  //
-  Value *InVal = 0;
-  for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i)
-    if (PN.getIncomingValue(i) != &PN)  // Not the PHI node itself...
-      if (InVal && PN.getIncomingValue(i) != InVal)
-        return 0;  // Not the same, bail out.
-      else
-        InVal = PN.getIncomingValue(i);
-
-  // The only case that could cause InVal to be null is if we have a PHI node
-  // that only has entries for itself.  In this case, there is no entry into the
-  // loop, so kill the PHI.
-  //
-  if (InVal == 0) InVal = Constant::getNullValue(PN.getType());
-
-  // All of the incoming values are the same, replace the PHI node now.
-  return ReplaceInstUsesWith(PN, InVal);
+  if (Value *V = hasConstantValue(&PN))
+    return ReplaceInstUsesWith(PN, V);
+  return 0;
 }