diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-12-10 07:52:18 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-12-10 07:52:18 +0000 |
commit | 71dc8fb867b549a0b161f43561658aac8e078f93 (patch) | |
tree | 34ffee33dfcb481c1fbe117f24bad3590d75cb85 /llvm/lib/Analysis/InstructionSimplify.cpp | |
parent | 48a8e641e228f7aec182db4a4a469d9cdd41e8b9 (diff) | |
download | llvm-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.cpp | 4 |
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()); |