Browse Source

Remove div by 0 check in udivrem implementation.

cl-refactor
Paweł Bylica 10 years ago
parent
commit
910732c2cb
  1. 5
      evmjit/libevmjit/Arith256.cpp

5
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 returnBB = llvm::BasicBlock::Create(_module.getContext(), "Return", func);
auto builder = llvm::IRBuilder<>{entryBB}; auto builder = llvm::IRBuilder<>{entryBB};
auto yNonZero = builder.CreateICmpNE(yArg, zero);
auto yLEx = builder.CreateICmpULE(yArg, x); auto yLEx = builder.CreateICmpULE(yArg, x);
auto r0 = builder.CreateSelect(yNonZero, x, zero, "r0"); auto r0 = x;
builder.CreateCondBr(builder.CreateAnd(yLEx, yNonZero), mainBB, returnBB); builder.CreateCondBr(yLEx, mainBB, returnBB);
builder.SetInsertPoint(mainBB); builder.SetInsertPoint(mainBB);
auto ctlzIntr = llvm::Intrinsic::getDeclaration(&_module, llvm::Intrinsic::ctlz, _type); auto ctlzIntr = llvm::Intrinsic::getDeclaration(&_module, llvm::Intrinsic::ctlz, _type);

Loading…
Cancel
Save