From 304ee7ad81cd7270685e8f061f0591b569846e81 Mon Sep 17 00:00:00 2001 From: Ruihang Lai Date: Mon, 7 Jul 2025 15:58:03 -0400 Subject: [PATCH] [Codegen] Update LLVM version requirement for `insertDeclare` This PR fixes the codegen llvm version requirement. Prior to this PR, we use `dbg_info_->di_builder_->insertDeclare` when LLVM version is at least 19.0, while the new `insertDeclare` interface starts with LLVM 20: * 19.1.0: https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/include/llvm/IR/DIBuilder.h#L95-L98 * 20.1.0: https://github.com/llvm/llvm-project/blob/llvmorg-20.1.0/llvm/include/llvm/IR/DIBuilder.h#L950-L952 As a result, we may run into the following compilation error if the LLVM version happens to be 19: ``` /home/ruihangl/Workspace/tvm/src/target/llvm/codegen_llvm.cc:2251:42: error: no matching function for call to 'llvm::DIBuilder::insertDeclare(llvm::AllocaInst*&, llvm::DILocalVariable*&, llvm::DIExpression*, llvm::DebugLoc, llvm::BasicBlock::iterator)' 2251 | dbg_info_->di_builder_->insertDeclare( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2252 | paramAlloca, param, dbg_info_->di_builder_->createExpression(), llvm::DebugLoc(di_loc), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2253 | llvm::BasicBlock::iterator(store)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/ruihangl/Workspace/tvm/src/target/llvm/codegen_llvm.cc:2293:42: error: no matching function for call to 'llvm::DIBuilder::insertDeclare(llvm::Value*&, llvm::DILocalVariable*&, llvm::DIExpression*, llvm::DebugLoc, llvm::BasicBlock::iterator)' 2293 | dbg_info_->di_builder_->insertDeclare( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2294 | llvm_value, local_var, dbg_info_->di_builder_->createExpression(), llvm::DebugLoc(di_loc), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2295 | llvm::BasicBlock::iterator(insert_before)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` To fixed this, we update the version requirement to LLVM 20. --- src/target/llvm/codegen_llvm.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/target/llvm/codegen_llvm.cc b/src/target/llvm/codegen_llvm.cc index 200692df2b52..8c8a9f2a4a89 100644 --- a/src/target/llvm/codegen_llvm.cc +++ b/src/target/llvm/codegen_llvm.cc @@ -2247,7 +2247,7 @@ void CodeGenLLVM::AddDebugInformation(llvm::Function* f_llvm, const Array& auto* store = builder.CreateStore(iter_param, paramAlloca); auto* di_loc = llvm::DILocation::get(*ctx, 0, 0, di_subprogram_); -#if TVM_LLVM_VERSION >= 190 +#if TVM_LLVM_VERSION >= 200 dbg_info_->di_builder_->insertDeclare( paramAlloca, param, dbg_info_->di_builder_->createExpression(), llvm::DebugLoc(di_loc), llvm::BasicBlock::iterator(store)); @@ -2289,7 +2289,7 @@ void CodeGenLLVM::AddDebugInformation(llvm::Value* llvm_value, const Var& tir_va auto* di_loc = llvm::DILocation::get(*llvm_target_->GetContext(), 0, 0, di_subprogram_); if (insert_before) { -#if TVM_LLVM_VERSION >= 190 +#if TVM_LLVM_VERSION >= 200 dbg_info_->di_builder_->insertDeclare( llvm_value, local_var, dbg_info_->di_builder_->createExpression(), llvm::DebugLoc(di_loc), llvm::BasicBlock::iterator(insert_before));