diff options
author | Chris Lattner <sabre@nondot.org> | 2010-01-02 21:46:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-01-02 21:46:33 +0000 |
commit | 1c91fae649734abe6f8271862fe3ba917e191279 (patch) | |
tree | 31149d40b0a7238e732805ad540edf50c5d7cfbb /lib/Transforms/Scalar/Reassociate.cpp | |
parent | 82602bc089236e916162c6a7821d746f8293571b (diff) |
theoretically the negate we find could be in a different function, check
for this case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92425 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/Reassociate.cpp')
-rw-r--r-- | lib/Transforms/Scalar/Reassociate.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index 827b47d3fe..71d787a839 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -414,6 +414,10 @@ static Value *NegateValue(Value *V, Instruction *BI) { // non-instruction value) or right after the definition. These negates will // be zapped by reassociate later, so we don't need much finesse here. BinaryOperator *TheNeg = cast<BinaryOperator>(*UI); + + // Verify that the negate is in this function, V might be a constant expr. + if (TheNeg->getParent()->getParent() != BI->getParent()->getParent()) + continue; BasicBlock::iterator InsertPt; if (Instruction *InstInput = dyn_cast<Instruction>(V)) { |