From 910732c2cb32c410034e291f5bea3c452d61696a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 13 May 2015 19:12:49 +0200 Subject: [PATCH] Remove div by 0 check in udivrem implementation. --- evmjit/libevmjit/Arith256.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/evmjit/libevmjit/Arith256.cpp b/evmjit/libevmjit/Arith256.cpp index 472c699a8..6c1f8f160 100644 --- a/evmjit/libevmjit/Arith256.cpp +++ b/evmjit/libevmjit/Arith256.cpp @@ -154,10 +154,9 @@ llvm::Function* createUDivRemFunc(llvm::Type* _type, llvm::Module& _module, char auto returnBB = llvm::BasicBlock::Create(_module.getContext(), "Return", func); auto builder = llvm::IRBuilder<>{entryBB}; - auto yNonZero = builder.CreateICmpNE(yArg, zero); auto yLEx = builder.CreateICmpULE(yArg, x); - auto r0 = builder.CreateSelect(yNonZero, x, zero, "r0"); - builder.CreateCondBr(builder.CreateAnd(yLEx, yNonZero), mainBB, returnBB); + auto r0 = x; + builder.CreateCondBr(yLEx, mainBB, returnBB); builder.SetInsertPoint(mainBB); auto ctlzIntr = llvm::Intrinsic::getDeclaration(&_module, llvm::Intrinsic::ctlz, _type);