You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by wr...@apache.org on 2022/08/14 03:13:35 UTC
[tvm] branch fix_thread_pool_alloca created (now b4c2c08fda)
This is an automated email from the ASF dual-hosted git repository.
wrongtest pushed a change to branch fix_thread_pool_alloca
in repository https://gitbox.apache.org/repos/asf/tvm.git
at b4c2c08fda fix thread pool alloca
This branch includes the following new commits:
new b4c2c08fda fix thread pool alloca
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[tvm] 01/01: fix thread pool alloca
Posted by wr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
wrongtest pushed a commit to branch fix_thread_pool_alloca
in repository https://gitbox.apache.org/repos/asf/tvm.git
commit b4c2c08fda7682f3b2b34efade8441554cfbf457
Author: wrongtest <wr...@gmail.com>
AuthorDate: Sun Aug 14 11:13:15 2022 +0800
fix thread pool alloca
---
src/target/llvm/codegen_cpu.cc | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/target/llvm/codegen_cpu.cc b/src/target/llvm/codegen_cpu.cc
index c4aed1a237..a95622f5e4 100644
--- a/src/target/llvm/codegen_cpu.cc
+++ b/src/target/llvm/codegen_cpu.cc
@@ -642,7 +642,16 @@ CodeGenLLVM::TypedPointer CodeGenCPU::PackClosureData(const Array<Var>& vfields,
}
llvm::StructType* ctype = struct_name.size() ? llvm::StructType::create(fields, struct_name)
: llvm::StructType::create(fields);
- llvm::Value* cvalue = builder_->CreateAlloca(ctype, ConstInt32(1));
+ // create ctype alloca at function entry
+ llvm::BasicBlock* cur_pt = builder_->GetInsertBlock();
+ llvm::BasicBlock* entry_block = &function_->getEntryBlock();
+ if (entry_block->getFirstInsertionPt() == entry_block->end()) {
+ builder_->SetInsertPoint(entry_block);
+ } else {
+ builder_->SetInsertPoint(&(*entry_block->getFirstInsertionPt()));
+ }
+ llvm::Value* cvalue = builder_->CreateAlloca(ctype, ConstInt32(1)); // alloca at function begin
+ builder_->SetInsertPoint(cur_pt);
llvm::Value* zero = ConstInt32(0);
for (size_t i = 0; i < vfields.size(); ++i) {
builder_->CreateStore(var_map_.at(vfields[i].get()),