diff options
author | Chris Lattner <sabre@nondot.org> | 2005-08-24 17:55:32 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-08-24 17:55:32 +0000 |
commit | ac83b0301ea5ce0e1092fad8f294fe7f046832ff (patch) | |
tree | 0f79ae1b2b84c49fb8c21afcb221865c4a21ba22 /lib/Transforms/Scalar/Reassociate.cpp | |
parent | fa48be79ae2298d80380ad69bc67cb40e65a0e2e (diff) |
Fix Regression/Transforms/Reassociate/2005-08-24-Crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23019 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/Reassociate.cpp')
-rw-r--r-- | lib/Transforms/Scalar/Reassociate.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index c55bce0d7e..60722ef68f 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -496,9 +496,15 @@ void Reassociate::OptimizeExpression(unsigned Opcode, ++NumAnnihil; } else { assert(Opcode == Instruction::Xor); + if (e == 2) { + Ops[0].Op = Constant::getNullValue(Ops[0].Op->getType()); + Ops.erase(Ops.begin()+1, Ops.end()); + ++NumAnnihil; + return; + } // ... X^X -> ... Ops.erase(Ops.begin()+i, Ops.begin()+i+2); - i -= 2; e -= 2; + i -= 1; e -= 2; IterateOptimization = true; ++NumAnnihil; } |