From: Chris Lattner Date: Fri, 19 Dec 2003 05:58:40 +0000 (+0000) Subject: Factor code out into the Utils library X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=60921c9aa1ec46e0d2858a3707fccb9e9908ae77;p=oota-llvm.git Factor code out into the Utils library git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10530 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index 80ae224f5d9..dad78ac81c6 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -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; }