Browse Source

Change Constant::get to support negative values

cl-refactor
Paweł Bylica 10 years ago
parent
commit
350b004e79
  1. 2
      libevmjit/Compiler.cpp
  2. 4
      libevmjit/Type.cpp
  3. 2
      libevmjit/Type.h

2
libevmjit/Compiler.cpp

@ -366,7 +366,7 @@ void Compiler::compileBasicBlock(BasicBlock& basicBlock, bytesConstRef bytecode,
case Instruction::BNOT:
{
auto value = stack.pop();
auto ret = m_builder.CreateXor(value, llvm::APInt(256, -1, true), "bnot");
auto ret = m_builder.CreateXor(value, Constant::get(-1), "bnot");
stack.push(ret);
break;
}

4
libevmjit/Type.cpp

@ -36,9 +36,9 @@ void Type::init(llvm::LLVMContext& _context)
RuntimePtr = RuntimeData::getType()->getPointerTo();
}
llvm::ConstantInt* Constant::get(uint64_t _n)
llvm::ConstantInt* Constant::get(int64_t _n)
{
return llvm::ConstantInt::get(Type::i256, _n);
return llvm::ConstantInt::getSigned(Type::i256, _n);
}
llvm::ConstantInt* Constant::get(u256 _n)

2
libevmjit/Type.h

@ -51,7 +51,7 @@ enum class ReturnCode
struct Constant
{
/// Returns word-size constant
static llvm::ConstantInt* get(uint64_t _n);
static llvm::ConstantInt* get(int64_t _n);
static llvm::ConstantInt* get(u256 _n);
static llvm::ConstantInt* get(ReturnCode _returnCode);

Loading…
Cancel
Save