From e70783b86bf3427bccd3d0b8cec858b888b8c887 Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Sun, 29 Jul 2018 16:13:26 +0100 Subject: DivCheck Skip unneeded checks Do not instrument divisions which do have a constant non-zero value. --- lib/Module/Checks.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/Module/Checks.cpp') diff --git a/lib/Module/Checks.cpp b/lib/Module/Checks.cpp index a9ef0dd4..b6aadce4 100644 --- a/lib/Module/Checks.cpp +++ b/lib/Module/Checks.cpp @@ -47,6 +47,12 @@ bool DivCheckPass::runOnModule(Module &M) { if (opcode != Instruction::SDiv && opcode != Instruction::UDiv && opcode != Instruction::SRem && opcode != Instruction::URem) continue; + + // Check if the operand is constant and not zero, skip in that case. + const auto &operand = binOp->getOperand(1); + if (const auto &coOp = dyn_cast(operand)) { + if (!coOp->isZeroValue()) + continue; } } } -- cgit 1.4.1