From 60921c9aa1ec46e0d2858a3707fccb9e9908ae77 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 19 Dec 2003 05:58:40 +0000 Subject: [PATCH] Factor code out into the Utils library git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10530 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Scalar/InstructionCombining.cpp | 26 +++---------------- 1 file changed, 3 insertions(+), 23 deletions(-) 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; } -- 2.34.1