diff --git a/src/compiler/evm_frontend/evm_mir_compiler.cpp b/src/compiler/evm_frontend/evm_mir_compiler.cpp index fd3796da..89ec9e82 100644 --- a/src/compiler/evm_frontend/evm_mir_compiler.cpp +++ b/src/compiler/evm_frontend/evm_mir_compiler.cpp @@ -3013,6 +3013,9 @@ EVMMirBuilder::convertCallResult(MInstruction *CallInstr) { } void EVMMirBuilder::normalizeOperandU64(Operand &Param, uint64_t *Value) { + if (Param.getType() == EVMType::BYTES32) { + Param = convertBytes32ToU256Operand(Param); + } if (Param.getType() != EVMType::UINT256) { return; } @@ -3107,6 +3110,9 @@ void EVMMirBuilder::normalizeOperandU64NonConst(Operand &Param, void EVMMirBuilder::normalizeOffsetWithSize(Operand &Offset, Operand &Size) { normalizeOperandU64(Size); + if (Offset.getType() == EVMType::BYTES32) { + Offset = convertBytes32ToU256Operand(Offset); + } if (Offset.getType() != EVMType::UINT256) { return; }