aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/InstructionSimplify.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-12-10 07:52:18 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-12-10 07:52:18 +0000
commit71dc8fb867b549a0b161f43561658aac8e078f93 (patch)
tree34ffee33dfcb481c1fbe117f24bad3590d75cb85 /llvm/lib/Analysis/InstructionSimplify.cpp
parent48a8e641e228f7aec182db4a4a469d9cdd41e8b9 (diff)
downloadllvm-71dc8fb867b549a0b161f43561658aac8e078f93.zip
llvm-71dc8fb867b549a0b161f43561658aac8e078f93.tar.gz
llvm-71dc8fb867b549a0b161f43561658aac8e078f93.tar.bz2
InstSimplify: div %X, 0 -> undef
We already optimized rem %X, 0 to undef, we should do the same for div. llvm-svn: 223919
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 2cf1661..767b42b 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -1011,6 +1011,10 @@ static Value *SimplifyDiv(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
if (match(Op1, m_Undef()))
return Op1;
+ // X / 0 -> undef, we don't need to preserve faults!
+ if (match(Op1, m_Zero()))
+ return UndefValue::get(Op1->getType());
+
// undef / X -> 0
if (match(Op0, m_Undef()))
return Constant::getNullValue(Op0->getType());