Skip to content

Commit 94fc6b1

Browse files
committed
LLVMCodeBuilder: Do not use alloca for list size
1 parent 2f2ed14 commit 94fc6b1

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

src/dev/engine/internal/llvm/llvmcodebuilder.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,7 @@ std::shared_ptr<ExecutableCode> LLVMCodeBuilder::finalize()
100100
listPtr.ptr = getListPtr(targetLists, list);
101101
listPtr.dataPtr = m_builder.CreateAlloca(m_valueDataType->getPointerTo());
102102
m_builder.CreateStore(m_builder.CreateCall(resolve_list_data(), listPtr.ptr), listPtr.dataPtr);
103-
listPtr.sizePtr = m_builder.CreateAlloca(m_builder.getInt64Ty()->getPointerTo());
104-
m_builder.CreateStore(m_builder.CreateCall(resolve_list_size_ptr(), listPtr.ptr), listPtr.sizePtr);
103+
listPtr.sizePtr = m_builder.CreateCall(resolve_list_size_ptr(), listPtr.ptr);
105104
}
106105

107106
// Execute recorded steps
@@ -550,8 +549,8 @@ std::shared_ptr<ExecutableCode> LLVMCodeBuilder::finalize()
550549
case LLVMInstruction::Type::GetListSize: {
551550
assert(step.args.size() == 0);
552551
const LLVMListPtr &listPtr = m_listPtrs[step.workList];
553-
llvm::Value *sizePtr = m_builder.CreateLoad(m_builder.getInt64Ty()->getPointerTo(), listPtr.sizePtr);
554-
step.functionReturnReg->value = m_builder.CreateUIToFP(m_builder.CreateLoad(m_builder.getInt64Ty(), sizePtr), m_builder.getDoubleTy());
552+
llvm::Value *size = m_builder.CreateLoad(m_builder.getInt64Ty(), listPtr.sizePtr);
553+
step.functionReturnReg->value = m_builder.CreateUIToFP(size, m_builder.getDoubleTy());
555554
break;
556555
}
557556

0 commit comments

Comments
 (0)