summaryrefslogtreecommitdiff
path: root/lib/Transforms/Scalar/GVN.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2009-12-03 03:43:29 +0000
committerOwen Anderson <resistor@mac.com>2009-12-03 03:43:29 +0000
commitc9f2027adb6f700b0a2822cd9bee1d2623b0c9e5 (patch)
tree57c2f68322f576256bf13b205ba073c022457dd7 /lib/Transforms/Scalar/GVN.cpp
parent229694f0ee630ceabe96a8bd48952f6740f928b2 (diff)
downloadllvm-c9f2027adb6f700b0a2822cd9bee1d2623b0c9e5.tar.gz
llvm-c9f2027adb6f700b0a2822cd9bee1d2623b0c9e5.tar.bz2
llvm-c9f2027adb6f700b0a2822cd9bee1d2623b0c9e5.tar.xz
Fix this crasher, and add a FIXME for a missed optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90408 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/GVN.cpp')
-rw-r--r--lib/Transforms/Scalar/GVN.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp
index ceb57f85a5..cbe7add582 100644
--- a/lib/Transforms/Scalar/GVN.cpp
+++ b/lib/Transforms/Scalar/GVN.cpp
@@ -1449,6 +1449,16 @@ bool GVN::processNonLocalLoad(LoadInst *LI,
LoadPtr = MD->GetAvailablePHITranslatedValue(LI->getOperand(0), LoadBB,
UnavailablePred, TD, *DT);
}
+
+ // Assign value numbers to these new instructions.
+ for (SmallVector<Instruction*, 8>::iterator NI = NewInsts.begin(),
+ NE = NewInsts.end(); NI != NE; ++NI) {
+ // FIXME: We really _ought_ to insert these value numbers into their
+ // parent's availability map. However, in doing so, we risk getting into
+ // ordering issues. If a block hasn't been processed yet, we would be
+ // marking a value as AVAIL-IN, which isn't what we intend.
+ VN.lookup_or_add(*NI);
+ }
// If we couldn't find or insert a computation of this phi translated value,
// we fail PRE.