diff options
author | Jay Foad <jay.foad@gmail.com> | 2011-03-30 11:19:20 +0000 |
---|---|---|
committer | Jay Foad <jay.foad@gmail.com> | 2011-03-30 11:19:20 +0000 |
commit | d8b4fb4aab4d6fedb2b14bed1b846451b17bde7c (patch) | |
tree | fb1299f91120b2d0bf513abc2ac6f42393fc627d /lib/Transforms/Scalar/GVN.cpp | |
parent | 8be7d8b43cef4fda9dec3ce05449e3d74c25fb04 (diff) | |
download | llvm-d8b4fb4aab4d6fedb2b14bed1b846451b17bde7c.tar.gz llvm-d8b4fb4aab4d6fedb2b14bed1b846451b17bde7c.tar.bz2 llvm-d8b4fb4aab4d6fedb2b14bed1b846451b17bde7c.tar.xz |
(Almost) always call reserveOperandSpace() on newly created PHINodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128535 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/GVN.cpp')
-rw-r--r-- | lib/Transforms/Scalar/GVN.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp index a0123f5898..9a7591e6c3 100644 --- a/lib/Transforms/Scalar/GVN.cpp +++ b/lib/Transforms/Scalar/GVN.cpp @@ -1944,11 +1944,12 @@ bool GVN::performPRE(Function &F) { addToLeaderTable(ValNo, PREInstr, PREPred); // Create a PHI to make the value available in this block. + pred_iterator PB = pred_begin(CurrentBlock), PE = pred_end(CurrentBlock); PHINode* Phi = PHINode::Create(CurInst->getType(), CurInst->getName() + ".pre-phi", CurrentBlock->begin()); - for (pred_iterator PI = pred_begin(CurrentBlock), - PE = pred_end(CurrentBlock); PI != PE; ++PI) { + Phi->reserveOperandSpace(std::distance(PB, PE)); + for (pred_iterator PI = PB; PI != PE; ++PI) { BasicBlock *P = *PI; Phi->addIncoming(predMap[P], P); } |