diff options
author | Chris Lattner <sabre@nondot.org> | 2009-09-28 06:49:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-09-28 06:49:44 +0000 |
commit | 3ddfb21306831c96791505c2e8e727923010354f (patch) | |
tree | 3f48d7c7603349fdccf1da0bf2285df424ba6b97 /lib | |
parent | 0e6b590b91fcf6d49d2c25196f5053ce285e17f5 (diff) | |
download | external_llvm-3ddfb21306831c96791505c2e8e727923010354f.zip external_llvm-3ddfb21306831c96791505c2e8e727923010354f.tar.gz external_llvm-3ddfb21306831c96791505c2e8e727923010354f.tar.bz2 |
The select instruction is not neccesarily in the same block as the
phi nodes. Make sure to phi translate from the right block.
This fixes a llvm-building-llvm failure on GVN-PRE.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82970 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/Scalar/InstructionCombining.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index 6826e13..561527c 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -2002,10 +2002,11 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I, // not the true/false values. Value *TrueV = SI->getTrueValue(); Value *FalseV = SI->getFalseValue(); + BasicBlock *PhiTransBB = PN->getParent(); for (unsigned i = 0; i != NumPHIValues; ++i) { BasicBlock *ThisBB = PN->getIncomingBlock(i); - Value *TrueVInPred = TrueV->DoPHITranslation(I.getParent(), ThisBB); - Value *FalseVInPred = FalseV->DoPHITranslation(I.getParent(), ThisBB); + Value *TrueVInPred = TrueV->DoPHITranslation(PhiTransBB, ThisBB); + Value *FalseVInPred = FalseV->DoPHITranslation(PhiTransBB, ThisBB); Value *InV = 0; if (Constant *InC = dyn_cast<Constant>(PN->getIncomingValue(i))) { InV = InC->isNullValue() ? FalseVInPred : TrueVInPred; |