mshr-h opened a new issue, #17140: URL: https://github.com/apache/tvm/issues/17140
I attempted to build TVM with LLVM 19 but failed with the following errors. I checked the LLVM docs and found that it seems like we need to include "llvm/Module.h" to use the `llvm:Module` class for LLVM >= 19. I'll send the PR to fix it. https://llvm.org/doxygen/classllvm_1_1Module.html ### Expected behavior TVM successfully compiles ### Actual behavior Got the below error message. ``` FAILED: CMakeFiles/tvm_objs.dir/src/target/llvm/codegen_amdgpu.cc.o ccache /usr/bin/c++ -DDMLC_USE_FOPEN64=0 -DDMLC_USE_LOGGING_LIBRARY="<tvm/runtime/logging.h>" -DNDEBUG=1 -DTVM_INDEX_DEFAULT_I64=1 -DTVM_LLVM_HAS_AARCH64_TARGET=1 -DTVM_LLVM_VERSION=190 -DTVM_LOG_DEBUG -DTVM_THREADPOOL_USE_OPENMP=0 -DTVM_USE_LIBBACKTRACE=1 -DUSE_FALLBACK_STL_MAP=0 -DUSE_MICRO_STANDALONE_RUNTIME=1 -DUSE_RELAY_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DDMLC_ENABLE_RTTI=0 -I/home/ubuntu/data/sandbox/_dep/tvm/include -I/home/ubuntu/data/sandbox/_dep/tvm/build/libbacktrace/include -I/home/ubuntu/data/sandbox/_dep/tvm/3rdparty/libcrc/include -isystem /home/ubuntu/data/sandbox/_dep/tvm/3rdparty/dlpack/include -isystem /home/ubuntu/data/sandbox/_dep/tvm/3rdparty/dmlc-core/include -isystem /home/ubuntu/data/sandbox/_dep/tvm/3rdparty/rang/include -isystem /home/ubuntu/data/sandbox/_dep/tvm/3rdparty/compiler-rt -isystem /home/ubuntu/data/sandbox/_dep/tvm/3rdparty/picojson -isystem /home/ubuntu/data/source/llvm-project/llvm/inc lude -isystem /home/ubuntu/data/source/llvm-project/build/include -std=c++17 -faligned-new -O2 -Wall -fPIC -fno-rtti -MD -MT CMakeFiles/tvm_objs.dir/src/target/llvm/codegen_amdgpu.cc.o -MF CMakeFiles/tvm_objs.dir/src/target/llvm/codegen_amdgpu.cc.o.d -o CMakeFiles/tvm_objs.dir/src/target/llvm/codegen_amdgpu.cc.o -c /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc: In function ‘tvm::runtime::Module tvm::codegen::BuildAMDGPU(tvm::IRModule, tvm::Target)’: /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:274:9: error: invalid use of incomplete type ‘class llvm::Module’ 274 | mlib->setTargetTriple(llvm_target->GetTargetTriple()); | ^~ In file included from /home/ubuntu/data/source/llvm-project/llvm/include/llvm/IR/Argument.h:18, from /home/ubuntu/data/source/llvm-project/llvm/include/llvm/IR/Function.h:25, from /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:29: /home/ubuntu/data/source/llvm-project/llvm/include/llvm/IR/Value.h:47:7: note: forward declaration of ‘class llvm::Module’ 47 | class Module; | ^~~~~~ /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:275:9: error: invalid use of incomplete type ‘class llvm::Module’ 275 | mlib->setDataLayout(tm->createDataLayout()); | ^~ /home/ubuntu/data/source/llvm-project/llvm/include/llvm/IR/Value.h:47:7: note: forward declaration of ‘class llvm::Module’ 47 | class Module; | ^~~~~~ /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:277:34: error: invalid use of incomplete type ‘class llvm::Module’ 277 | for (llvm::Function& f : mlib->functions()) { | ^~ /home/ubuntu/data/source/llvm-project/llvm/include/llvm/IR/Value.h:47:7: note: forward declaration of ‘class llvm::Module’ 47 | class Module; | ^~~~~~ /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:289:9: error: invalid use of incomplete type ‘class llvm::Module’ 289 | module->print(dest_ll, nullptr); | ^~ /home/ubuntu/data/source/llvm-project/llvm/include/llvm/IR/Value.h:47:7: note: forward declaration of ‘class llvm::Module’ 47 | class Module; | ^~~~~~ In file included from /usr/include/c++/13/memory:78, from /home/ubuntu/data/source/llvm-project/llvm/include/llvm/ADT/SmallVector.h:28, from /home/ubuntu/data/source/llvm-project/llvm/include/llvm/ADT/SmallString.h:17, from /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:26: /usr/include/c++/13/bits/unique_ptr.h: In instantiation of ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = llvm::Module]’: /usr/include/c++/13/bits/unique_ptr.h:404:17: required from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = llvm::Module; _Dp = std::default_delete<llvm::Module>]’ /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:273:62: required from here /usr/include/c++/13/bits/unique_ptr.h:97:23: error: invalid application of ‘sizeof’ to incomplete type ‘llvm::Module’ 97 | static_assert(sizeof(_Tp)>0, | ^~~~~~~~~~~ /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc: In member function ‘virtual llvm::Value* tvm::codegen::CodeGenAMDGPU::CreateStorageSync(const tvm::tir::CallNode*)’: /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:205:3: warning: control reaches end of non-void function [-Wreturn-type] 205 | } | ^ In file included from /home/ubuntu/data/sandbox/_dep/tvm/include/tvm/tir/stmt_functor.h:31, from /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_llvm.h:61, from /home/ubuntu/data/sandbox/_dep/tvm/src/target/llvm/codegen_amdgpu.cc:55: /home/ubuntu/data/sandbox/_dep/tvm/include/tvm/tir/expr_functor.h: In member function ‘R tvm::tir::ExprFunctor<R(const tvm::PrimExpr&, Args ...)>::VisitExprDefault_(const tvm::runtime::Object*, Args ...) [with R = llvm::Value*; Args = {}]’: /home/ubuntu/data/sandbox/_dep/tvm/include/tvm/tir/expr_functor.h:154:48: warning: control reaches end of non-void function [-Wreturn-type] 154 | LOG(FATAL) << "Do not have a default for " << op->GetTypeKey(); | ^ ninja: build stopped: subcommand failed. ``` ### Environment - TVM@0fc047c98b1ebf730b8c9aad8b94ddac28a7b34b - LLVM@4a9dabee73f79974c69a35af7668c7a7e52e2d7f ### Steps to reproduce Build TVM with LLVM. ### Triage * backend: rocm -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
