From c9a0efac9b2332fd569ace809fae94ac6fc536a6 Mon Sep 17 00:00:00 2001 From: syang-ng Date: Sun, 26 Sep 2021 06:24:57 +0000 Subject: [PATCH 1/3] check nullptr for attr stmt --- src/target/llvm/codegen_cpu.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/target/llvm/codegen_cpu.cc b/src/target/llvm/codegen_cpu.cc index ab96d6e69d14..490649fcd15f 100644 --- a/src/target/llvm/codegen_cpu.cc +++ b/src/target/llvm/codegen_cpu.cc @@ -941,7 +941,9 @@ void CodeGenCPU::VisitStmt_(const AssertStmtNode* op) { void CodeGenCPU::VisitStmt_(const AttrStmtNode* op) { if (op->attr_key == tir::attr::coproc_uop_scope) { - this->CreateStaticInit(op->value.as()->value, op->body); + const StringImmNode* value = op->value.as(); + ICHECK(value != nullptr); + this->CreateStaticInit(value->value, op->body); } else if (op->attr_key == tir::attr::compute_scope) { this->CreateComputeScope(op); } else if (tir::attr::IsPragmaKey(op->attr_key)) { From 4427e5da40fc31e75610e8fd3914b68d0a0ed4e0 Mon Sep 17 00:00:00 2001 From: syang-ng Date: Mon, 27 Sep 2021 17:28:23 +0000 Subject: [PATCH 2/3] check nullptr for attr stmt with attr_key compute_scope --- src/target/llvm/codegen_cpu.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/target/llvm/codegen_cpu.cc b/src/target/llvm/codegen_cpu.cc index 490649fcd15f..c3d830565e8a 100644 --- a/src/target/llvm/codegen_cpu.cc +++ b/src/target/llvm/codegen_cpu.cc @@ -440,9 +440,11 @@ void CodeGenCPU::CreateComputeScope(const AttrStmtNode* op) { // $xxx_compute_ functions are not global. They should be marked as static (via InternalLinkage) // to call them correctly on MIPS platform (CALL16 issue) // Linkage ld Error: CALL16 reloc at 0x290 not against global symbol + const StringImmNode* value = op->value.as(); + ICHECK(value != nullptr); llvm::Function* fcompute = llvm::Function::Create( ftype, llvm::Function::InternalLinkage, - op->value.as()->value.operator llvm::StringRef(), module_.get()); + value->value.operator llvm::StringRef(), module_.get()); BasicBlock* compute_call_end = CheckCallSuccess(builder_->CreateCall(fcompute, arg_values)); // setup compute function. std::unordered_map new_vmap; From b1b4f08643365093fee42c5648b25300326f8e86 Mon Sep 17 00:00:00 2001 From: syang-ng Date: Mon, 27 Sep 2021 17:33:57 +0000 Subject: [PATCH 3/3] update the code style --- src/target/llvm/codegen_cpu.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/target/llvm/codegen_cpu.cc b/src/target/llvm/codegen_cpu.cc index c3d830565e8a..2e0463d899f0 100644 --- a/src/target/llvm/codegen_cpu.cc +++ b/src/target/llvm/codegen_cpu.cc @@ -442,9 +442,9 @@ void CodeGenCPU::CreateComputeScope(const AttrStmtNode* op) { // Linkage ld Error: CALL16 reloc at 0x290 not against global symbol const StringImmNode* value = op->value.as(); ICHECK(value != nullptr); - llvm::Function* fcompute = llvm::Function::Create( - ftype, llvm::Function::InternalLinkage, - value->value.operator llvm::StringRef(), module_.get()); + llvm::Function* fcompute = + llvm::Function::Create(ftype, llvm::Function::InternalLinkage, + value->value.operator llvm::StringRef(), module_.get()); BasicBlock* compute_call_end = CheckCallSuccess(builder_->CreateCall(fcompute, arg_values)); // setup compute function. std::unordered_map new_vmap;