@@ -1779,17 +1779,18 @@ llvm::Value *LoadFromMemory(const IntrinsicTable &intrinsics,
17791779 llvm::ArrayType::get (llvm::Type::getInt8Ty (context), size);
17801780 auto byte_array =
17811781 ir.CreateBitCast (res, llvm::PointerType::get (i8_array, 0 ));
1782- llvm::Value *gep_indices[2 ] = {
1783- llvm::ConstantInt::get (index_type, 0 , false ), nullptr };
17841782
1783+ auto gep_zero = llvm::ConstantInt::get (index_type, 0 , false );
17851784 // Load one byte at a time from memory, and store it into
17861785 // `res`.
17871786 for (auto i = 0U ; i < size; ++i) {
1788- args_2[1 ] = ir.CreateAdd (
1787+ llvm::Value *gep_indices[2 ] = {
1788+ gep_zero, llvm::ConstantInt::get (index_type, i, false )};
1789+ auto call_arg_addr = ir.CreateAdd (
17891790 addr, llvm::ConstantInt::get (addr->getType (), i, false ));
1790- auto byte = ir. CreateCall (intrinsics. read_memory_8 , args_2) ;
1791- gep_indices[ 1 ] = llvm::ConstantInt::get (index_type, i, false );
1792- auto byte_ptr = ir.CreateInBoundsGEP (i8_array, byte_array, gep_indices);
1791+ llvm::Value* call_args[ 2 ] = {mem_ptr, call_arg_addr} ;
1792+ auto byte = ir. CreateCall (intrinsics. read_memory_8 , llvm::makeArrayRef (call_args) );
1793+ auto byte_ptr = ir.CreateInBoundsGEP (i8_array, byte_array, llvm::makeArrayRef ( gep_indices) );
17931794 ir.CreateStore (byte, byte_ptr);
17941795 }
17951796
0 commit comments