projects
/
oota-llvm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(from parent 1:
23e2563
)
Implement sub.ll:test17, -X/C -> X/-C
author
Chris Lattner
<sabre@nondot.org>
Sat, 9 Oct 2004 02:50:40 +0000
(
02:50
+0000)
committer
Chris Lattner
<sabre@nondot.org>
Sat, 9 Oct 2004 02:50:40 +0000
(
02:50
+0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16863
91177308
-0d34-0410-b5e6-
96231b3b80d8
lib/Transforms/Scalar/InstructionCombining.cpp
patch
|
blob
|
history
diff --git
a/lib/Transforms/Scalar/InstructionCombining.cpp
b/lib/Transforms/Scalar/InstructionCombining.cpp
index 5b477b3a409753f54477002f81fa830c95f16527..f663ae6137f3a2063e2c7180a0a0bd77a3b8ba54 100644
(file)
--- a/
lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/
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;