diff options
| author | Chris Lattner <sabre@nondot.org> | 2004-10-09 02:50:40 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2004-10-09 02:50:40 +0000 |
| commit | 4ad08352b42e2e55a7e2fa644c72aa54887e9705 (patch) | |
| tree | 2b8a3e443e73132a5aa86fd073ab0591b0cab5d5 /llvm/lib | |
| parent | cdc19d6a0ea92139856f5c522b5e9dd1eb168190 (diff) | |
| download | bcm5719-llvm-4ad08352b42e2e55a7e2fa644c72aa54887e9705.tar.gz bcm5719-llvm-4ad08352b42e2e55a7e2fa644c72aa54887e9705.zip | |
Implement sub.ll:test17, -X/C -> X/-C
llvm-svn: 16863
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 5b477b3a409..f663ae6137f 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -946,6 +946,11 @@ Instruction *InstCombiner::visitDiv(BinaryOperator &I) { return new ShiftInst(Instruction::Shr, I.getOperand(0), ConstantUInt::get(Type::UByteTy, C)); + // -X/C -> X/-C + if (RHS->getType()->isSigned()) + if (Value *LHSNeg = dyn_castNegVal(I.getOperand(0))) + return BinaryOperator::createDiv(LHSNeg, ConstantExpr::getNeg(RHS)); + if (isa<PHINode>(I.getOperand(0)) && !RHS->isNullValue()) if (Instruction *NV = FoldOpIntoPhi(I)) return NV; |

