summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-04-30 18:16:00 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-04-30 18:16:00 +0000
commit57b3df59b92c36441c931381e57df35f1959cf4b (patch)
tree5f3cdf4b4c3c6af0891f2182597e554c85f30293 /llvm/lib
parent6a50bbd284da03f577c16e1abe50042e3b3d7eb6 (diff)
downloadbcm5719-llvm-57b3df59b92c36441c931381e57df35f1959cf4b.tar.gz
bcm5719-llvm-57b3df59b92c36441c931381e57df35f1959cf4b.zip
Use SimplifyDemandedBits on div instructions.
This folds away silly stuff like (a&255)/1000 -> 0. llvm-svn: 130614
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
index 66513874815..b4f4da6fb0e 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
@@ -320,6 +320,10 @@ Instruction *InstCombiner::commonIDivTransforms(BinaryOperator &I) {
}
}
+ // See if we can fold away this div instruction.
+ if (SimplifyDemandedInstructionBits(I))
+ return &I;
+
// (X - (X rem Y)) / Y -> X / Y; usually originates as ((X / Y) * Y) / Y
Value *X = 0, *Z = 0;
if (match(Op0, m_Sub(m_Value(X), m_Value(Z)))) { // (X - Z) / Y; Y = Op1
OpenPOWER on IntegriCloud