From 85658f83262dd372c3bff1f143703840ad8ae428 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 28 Jan 2015 18:42:23 +0100 Subject: [PATCH] Fix memory index having type i256 --- evmjit/libevmjit/RuntimeManager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/evmjit/libevmjit/RuntimeManager.cpp b/evmjit/libevmjit/RuntimeManager.cpp index 4021ad46f..408f2dee3 100644 --- a/evmjit/libevmjit/RuntimeManager.cpp +++ b/evmjit/libevmjit/RuntimeManager.cpp @@ -148,7 +148,8 @@ void RuntimeManager::registerReturnData(llvm::Value* _offset, llvm::Value* _size { auto memPtr = getBuilder().CreateStructGEP(getRuntimePtr(), 3); auto mem = getBuilder().CreateLoad(memPtr, "memory"); - auto returnDataPtr = getBuilder().CreateGEP(mem, _offset); + auto idx = m_builder.CreateTrunc(_offset, Type::Size, "idx"); // Never allow memory index be a type bigger than i64 // TODO: Report bug & fix to LLVM + auto returnDataPtr = getBuilder().CreateGEP(mem, idx); set(RuntimeData::ReturnData, returnDataPtr); auto size64 = getBuilder().CreateTrunc(_size, Type::Size);