diff options
| author | Chris Lattner <sabre@nondot.org> | 2003-12-19 05:58:40 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2003-12-19 05:58:40 +0000 |
| commit | 91daeb54312577c6b37cc4f7f837657b6ec8511f (patch) | |
| tree | 55e7f788eb658c4533bd520bde1545042280c559 /llvm/lib/Transforms/Scalar | |
| parent | 04efa4b155ae2fc1e60f38da379deb2239416983 (diff) | |
| download | bcm5719-llvm-91daeb54312577c6b37cc4f7f837657b6ec8511f.tar.gz bcm5719-llvm-91daeb54312577c6b37cc4f7f837657b6ec8511f.zip | |
Factor code out into the Utils library
llvm-svn: 10530
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 80ae224f5d9..dad78ac81c6 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/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; } |

