mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 04:36:42 +00:00
Fix BYTE instruction
This commit is contained in:
parent
a2492d4983
commit
f78fbbf50e
1 changed files with 2 additions and 1 deletions
|
|
@ -394,7 +394,8 @@ void Compiler::compileBasicBlock(BasicBlock& _basicBlock, bytes const& _bytecode
|
||||||
|
|
||||||
value = Endianness::toBE(m_builder, value);
|
value = Endianness::toBE(m_builder, value);
|
||||||
auto bytes = m_builder.CreateBitCast(value, llvm::VectorType::get(Type::Byte, 32), "bytes");
|
auto bytes = m_builder.CreateBitCast(value, llvm::VectorType::get(Type::Byte, 32), "bytes");
|
||||||
auto byte = m_builder.CreateExtractElement(bytes, byteNum, "byte");
|
auto safeByteNum = m_builder.CreateZExt(m_builder.CreateTrunc(byteNum, m_builder.getIntNTy(5)), Type::lowPrecision); // Trim index, large values can crash
|
||||||
|
auto byte = m_builder.CreateExtractElement(bytes, safeByteNum, "byte");
|
||||||
value = m_builder.CreateZExt(byte, Type::Word);
|
value = m_builder.CreateZExt(byte, Type::Word);
|
||||||
|
|
||||||
auto byteNumValid = m_builder.CreateICmpULT(byteNum, Constant::get(32));
|
auto byteNumValid = m_builder.CreateICmpULT(byteNum, Constant::get(32));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue