Description
Hey,
I am facing some issues with building MLIR tools, e.g., mlir-query
or mlir-translate
, as I'm getting the following error at the linking stage (full text at the end of the issue):
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `generatedTypeParser(mlir::AsmParser&, llvm::StringRef*, mlir::Type&)::{lambda(llvm::StringRef, llvm::SMLoc)#3}::operator()(llvm::StringRef, llvm::SMLoc) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:37: undefined reference to `mlir::LLVM::LLVMStructType::parse(mlir::AsmParser&)'
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `auto generatedTypePrinter(mlir::Type, mlir::AsmPrinter&)::{lambda(auto:1)#3}::operator()<mlir::LLVM::LLVMStructType>(mlir::LLVM::LLVMStructType) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:79: undefined reference to `mlir::LLVM::LLVMStructType::print(mlir::AsmPrinter&) const'
I am trying to build the fairly recent main (969b765), only enabling the MLIR project:
cmake ./llvm-linux/llvm -G="Ninja" -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_TARGETS_TO_BUILD="Native" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX="./install-linux" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_COMPILE_JOBS=12 -B build-linux -DCMAKE_BUILD_TYPE=Debug -DLLVM_CCACHE_BUILD=ON
I am building it on Ubuntu 22.04.3 inside WSL with gcc 11.4.0. I tried disabling ccache and recreating the whole build directory, but no success. My colleague also managed to recreate the same issue independently on his machine. I had no issues few days ago, so the problem seems to be recent. In fact, I tracked the potential problem to this PR: #117485, as it involves changes to LLVMStructType
. To verify whether this could be causing an issue I reverted the commit (d35098b) locally and everything works again.
At this point, I am not sure whether there is a bug or there is something wrong with my setup, so some external input would be appreciated.
Mentioning @zero9178 and @gysit as they may be the relevant people to help me with the issue.
Full error message:
[41/41] Linking CXX executable bin/mlir-translate
FAILED: bin/mlir-translate
: && /usr/bin/c++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -g -Wl,-rpath-link,/home/igor/build-linux/./lib tools/mlir/tools/mlir-translate/CMakeFiles/mlir-translate.dir/mlir-translate.cpp.o -o bin/mlir-translate -Wl,-rpath,"\$ORIGIN/../lib:" lib/libLLVMSupport.a lib/libMLIRAffineAnalysis.a lib/libMLIRAffineDialect.a lib/libMLIRAffineTransforms.a lib/libMLIRAffineTransformOps.a lib/libMLIRAffineUtils.a lib/libMLIRAMDGPUDialect.a lib/libMLIRAMDGPUTransforms.a lib/libMLIRAMDGPUUtils.a lib/libMLIRAMXDialect.a lib/libMLIRAMXTransforms.a lib/libMLIRArithDialect.a lib/libMLIRArithValueBoundsOpInterfaceImpl.a lib/libMLIRArithTransforms.a lib/libMLIRArithUtils.a lib/libMLIRArmNeonDialect.a lib/libMLIRArmNeonTransforms.a lib/libMLIRArmSMEDialect.a lib/libMLIRArmSMETransforms.a lib/libMLIRArmSVEDialect.a lib/libMLIRArmSVETransforms.a lib/libMLIRAsyncDialect.a lib/libMLIRAsyncTransforms.a lib/libMLIRBufferizationDialect.a lib/libMLIRBufferizationPipelines.a lib/libMLIRBufferizationTransformOps.a lib/libMLIRBufferizationTransforms.a lib/libMLIRComplexDialect.a lib/libMLIRControlFlowDialect.a lib/libMLIRControlFlowTransforms.a lib/libMLIRDLTITransformOps.a lib/libMLIRDLTIDialect.a lib/libMLIREmitCDialect.a lib/libMLIREmitCTransforms.a lib/libMLIRFuncDialect.a lib/libMLIRFuncTransforms.a lib/libMLIRFuncTransformOps.a lib/libMLIRGPUDialect.a lib/libMLIRGPUTransforms.a lib/libMLIRGPUTransformOps.a lib/libMLIRGPUPipelines.a lib/libMLIRIndexDialect.a lib/libMLIRIRDL.a lib/libMLIRLinalgDialect.a lib/libMLIRLinalgTransformOps.a lib/libMLIRLinalgTransforms.a lib/libMLIRLinalgUtils.a lib/libMLIRLLVMIRTransforms.a lib/libMLIRLLVMDialect.a lib/libMLIRNVVMDialect.a lib/libMLIRROCDLDialect.a lib/libMLIRVCIXDialect.a lib/libMLIRMathDialect.a lib/libMLIRMathTransforms.a lib/libMLIRMemRefDialect.a lib/libMLIRMemRefTransformOps.a lib/libMLIRMemRefTransforms.a lib/libMLIRMemRefUtils.a lib/libMLIRMeshDialect.a lib/libMLIRMeshTransforms.a lib/libMLIRMLProgramDialect.a lib/libMLIRMLProgramTransforms.a lib/libMLIRMPIDialect.a lib/libMLIRNVGPUDialect.a lib/libMLIRNVGPUUtils.a lib/libMLIRNVGPUTransformOps.a lib/libMLIRNVGPUTransforms.a lib/libMLIROpenACCDialect.a lib/libMLIROpenACCTransforms.a lib/libMLIROpenMPDialect.a lib/libMLIRPDLDialect.a lib/libMLIRPDLInterpDialect.a lib/libMLIRPolynomialDialect.a lib/libMLIRPtrDialect.a lib/libMLIRQuantDialect.a lib/libMLIRQuantTransforms.a lib/libMLIRQuantUtils.a lib/libMLIRSCFDialect.a lib/libMLIRSCFTransformOps.a lib/libMLIRSCFTransforms.a lib/libMLIRSCFUtils.a lib/libMLIRShapeDialect.a lib/libMLIRShapeOpsTransforms.a lib/libMLIRSparseTensorDialect.a lib/libMLIRSparseTensorPipelines.a lib/libMLIRSparseTensorTransformOps.a lib/libMLIRSparseTensorTransforms.a lib/libMLIRSparseTensorUtils.a lib/libMLIRSPIRVDialect.a lib/libMLIRSPIRVModuleCombiner.a lib/libMLIRSPIRVConversion.a lib/libMLIRSPIRVTransforms.a lib/libMLIRSPIRVUtils.a lib/libMLIRTensorDialect.a lib/libMLIRTensorInferTypeOpInterfaceImpl.a lib/libMLIRTensorTilingInterfaceImpl.a lib/libMLIRTensorTransforms.a lib/libMLIRTensorTransformOps.a lib/libMLIRTensorUtils.a lib/libMLIRTosaDialect.a lib/libMLIRTosaShardingInterfaceImpl.a lib/libMLIRTosaTransforms.a lib/libMLIRTransformDebugExtension.a lib/libMLIRTransformDialect.a lib/libMLIRTransformDialectIRDLExtension.a lib/libMLIRTransformLoopExtension.a lib/libMLIRTransformPDLExtension.a lib/libMLIRTransformDialectTransforms.a lib/libMLIRTransformDialectUtils.a lib/libMLIRUBDialect.a lib/libMLIRVectorDialect.a lib/libMLIRVectorTransforms.a lib/libMLIRVectorTransformOps.a lib/libMLIRVectorUtils.a lib/libMLIRX86VectorDialect.a lib/libMLIRX86VectorTransforms.a lib/libMLIRXeGPUDialect.a lib/libMLIRXeGPUTransforms.a lib/libMLIRSPIRVTarget.a lib/libMLIRNVVMTarget.a lib/libMLIRROCDLTarget.a lib/libMLIRTestDynDialect.a lib/libMLIRTosaTestPasses.a lib/libMLIRTargetCpp.a lib/libMLIRSPIRVDeserialization.a lib/libMLIRSPIRVSerialization.a lib/libMLIRSPIRVBinaryUtils.a lib/libMLIRSPIRVTranslateRegistration.a lib/libMLIRArmNeonToLLVMIRTranslation.a lib/libMLIRArmSMEToLLVMIRTranslation.a lib/libMLIRArmSVEToLLVMIRTranslation.a lib/libMLIRAMXToLLVMIRTranslation.a lib/libMLIRBuiltinToLLVMIRTranslation.a lib/libMLIRGPUToLLVMIRTranslation.a lib/libMLIRLLVMIRToLLVMTranslation.a lib/libMLIRLLVMToLLVMIRTranslation.a lib/libMLIRLLVMIRToNVVMTranslation.a lib/libMLIRNVVMToLLVMIRTranslation.a lib/libMLIROpenACCToLLVMIRTranslation.a lib/libMLIROpenMPToLLVMIRTranslation.a lib/libMLIRROCDLToLLVMIRTranslation.a lib/libMLIRSPIRVToLLVMIRTranslation.a lib/libMLIRVCIXToLLVMIRTranslation.a lib/libMLIRX86VectorToLLVMIRTranslation.a lib/libMLIRTargetLLVMIRExport.a lib/libMLIRToLLVMIRTranslationRegistration.a lib/libMLIRTargetLLVMIRImport.a lib/libMLIRFromLLVMIRTranslationRegistration.a lib/libMLIRTestFromLLVMIRTranslation.a lib/libMLIRTestToLLVMIRTranslation.a lib/libMLIRIR.a lib/libMLIRParser.a lib/libMLIRPass.a lib/libMLIRSPIRVDialect.a lib/libMLIRTranslateLib.a lib/libMLIRSupport.a lib/libMLIRAMDGPUDialect.a lib/libMLIRIndexToLLVM.a lib/libMLIRNVVMToLLVM.a lib/libMLIRMLProgramDialect.a lib/libMLIRNVGPUToNVVM.a lib/libMLIRShapeDialect.a lib/libMLIRSCFToControlFlow.a lib/libMLIRGPUToNVVMTransforms.a lib/libMLIRGPUToGPURuntimeTransforms.a lib/libMLIRGPUTransforms.a lib/libMLIRSPIRVTarget.a lib/libMLIRNVVMTarget.a lib/libMLIRROCDLTarget.a lib/libMLIRTargetLLVM.a lib/libMLIRExecutionEngineUtils.a lib/libLLVMPasses.a lib/libLLVMCoroutines.a lib/libLLVMipo.a lib/libLLVMVectorize.a lib/libLLVMSandboxIR.a lib/libLLVMLinker.a lib/libLLVMInstrumentation.a lib/libLLVMCFGuard.a lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMCGData.a lib/libLLVMCodeGenTypes.a lib/libLLVMHipStdPar.a lib/libLLVMIRPrinter.a lib/libLLVMObjCARCOpts.a lib/libMLIRAsyncToLLVM.a lib/libMLIRAsyncDialect.a lib/libMLIRFuncToLLVM.a lib/libMLIRArithToLLVM.a lib/libMLIRControlFlowToLLVM.a lib/libMLIRConvertToLLVMPass.a lib/libMLIRConvertToLLVMInterface.a lib/libMLIRAffineToStandard.a lib/libMLIRMathToLLVM.a lib/libMLIRReconcileUnrealizedCasts.a lib/libMLIRComplexToLLVM.a lib/libMLIRComplexToLibm.a lib/libMLIRComplexToStandard.a lib/libMLIRMathToLibm.a lib/libMLIRMemRefToLLVM.a lib/libMLIRVectorToLLVMPass.a lib/libMLIRAMXTransforms.a lib/libMLIRArmSVETransforms.a lib/libMLIRLinalgTransformOps.a lib/libMLIRSPIRVConversion.a lib/libMLIRIRDL.a lib/libMLIRTransformDialect.a lib/libMLIRTransformDialectInterfaces.a lib/libMLIRTransformDialectUtils.a lib/libMLIRX86VectorTransforms.a lib/libMLIRVectorToLLVM.a lib/libMLIRLLVMCommonConversion.a lib/libMLIRArithAttrToLLVMConversion.a lib/libMLIRXeGPUDialect.a lib/libMLIREmitCDialect.a lib/libMLIRSPIRVDeserialization.a lib/libMLIRSPIRVSerialization.a lib/libMLIRSPIRVBinaryUtils.a lib/libMLIRArmNeonToLLVMIRTranslation.a lib/libMLIRArmNeonDialect.a lib/libMLIRArmSMEToLLVMIRTranslation.a lib/libMLIRArmSMEDialect.a lib/libMLIRArmSVEToLLVMIRTranslation.a lib/libMLIRArmSVEDialect.a lib/libMLIRAMXToLLVMIRTranslation.a lib/libMLIRAMXDialect.a lib/libMLIRGPUToLLVMIRTranslation.a lib/libMLIRNVVMToLLVMIRTranslation.a lib/libMLIROpenACCToLLVMIRTranslation.a lib/libMLIROpenACCDialect.a lib/libMLIROpenMPToLLVMIRTranslation.a lib/libMLIROpenMPDialect.a lib/libMLIROpenACCMPCommon.a lib/libMLIRROCDLToLLVMIRTranslation.a lib/libMLIRROCDLDialect.a lib/libMLIRSPIRVToLLVMIRTranslation.a lib/libMLIRSPIRVDialect.a lib/libMLIRVCIXToLLVMIRTranslation.a lib/libMLIRVCIXDialect.a lib/libMLIRX86VectorToLLVMIRTranslation.a lib/libMLIRX86VectorDialect.a lib/libMLIRLLVMIRToNVVMTranslation.a lib/libMLIRLLVMIRToLLVMTranslation.a lib/libMLIRTargetLLVMIRImport.a lib/libMLIRBuiltinToLLVMIRTranslation.a lib/libMLIRLLVMToLLVMIRTranslation.a lib/libMLIRTargetLLVMIRExport.a lib/libMLIRLLVMIRTransforms.a lib/libMLIRNVVMDialect.a lib/libMLIRTranslateLib.a lib/libLLVMFrontendOpenMP.a lib/libLLVMFrontendOffloading.a lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMTransformUtils.a lib/libMLIRTestDialect.a lib/libMLIRLinalgTransforms.a lib/libMLIRIndexDialect.a lib/libMLIRMemRefTransforms.a lib/libMLIRArithTransforms.a lib/libMLIRFuncTransforms.a lib/libMLIRNVGPUDialect.a lib/libMLIRMeshTransforms.a lib/libMLIRTosaShardingInterfaceImpl.a lib/libMLIRTosaDialect.a lib/libMLIRQuantUtils.a lib/libMLIRQuantDialect.a lib/libMLIRShardingInterface.a lib/libMLIRMeshDialect.a lib/libMLIRSCFTransforms.a lib/libMLIRBufferizationTransforms.a lib/libMLIRTensorTransforms.a lib/libMLIRAffineTransforms.a lib/libMLIRSCFUtils.a lib/libMLIRTensorTilingInterfaceImpl.a lib/libMLIRLinalgUtils.a lib/libMLIRTensorUtils.a lib/libMLIRTilingInterface.a lib/libMLIRVectorToSCF.a lib/libMLIRVectorTransforms.a lib/libMLIRAffineUtils.a lib/libMLIRGPUDialect.a lib/libMLIRDLTIDialect.a lib/libMLIRLinalgDialect.a lib/libMLIRBufferizationDialect.a lib/libMLIRMathDialect.a lib/libMLIRSparseTensorDialect.a lib/libMLIRParser.a lib/libMLIRBytecodeReader.a lib/libMLIRAsmParser.a lib/libMLIRMemRefUtils.a lib/libMLIRVectorUtils.a lib/libMLIRAffineAnalysis.a lib/libMLIRSCFDialect.a lib/libMLIRControlFlowDialect.a lib/libMLIRFuncDialect.a lib/libMLIRVectorDialect.a lib/libMLIRMaskableOpInterface.a lib/libMLIRMaskingOpInterface.a lib/libMLIRVectorInterfaces.a lib/libMLIRLLVMDialect.a lib/libLLVMBitWriter.a lib/libLLVMAnalysis.a lib/libLLVMProfileData.a lib/libLLVMSymbolize.a lib/libLLVMDebugInfoPDB.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a lib/libLLVMDebugInfoBTF.a lib/libLLVMDebugInfoDWARF.a lib/libLLVMObject.a lib/libLLVMMCParser.a lib/libLLVMIRReader.a lib/libLLVMAsmParser.a lib/libLLVMBitReader.a lib/libLLVMMC.a lib/libLLVMTextAPI.a lib/libLLVMCore.a lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libMLIRPolynomialDialect.a lib/libMLIRTensorDialect.a lib/libMLIRAffineDialect.a lib/libMLIRMemRefDialect.a lib/libMLIRArithUtils.a lib/libMLIRComplexDialect.a lib/libMLIRArithDialect.a lib/libMLIRUBDialect.a lib/libMLIRInferIntRangeCommon.a lib/libMLIRDialectUtils.a lib/libMLIRShapedOpInterfaces.a lib/libMLIRCastInterfaces.a lib/libMLIRParallelCombiningOpInterface.a lib/libMLIRTransforms.a lib/libMLIRMemorySlotInterfaces.a lib/libMLIRRuntimeVerifiableOpInterface.a lib/libMLIRDialect.a lib/libMLIRDerivedAttributeOpInterface.a lib/libMLIRReduce.a lib/libMLIRTransformUtils.a lib/libMLIRSubsetOpInterface.a lib/libMLIRValueBoundsOpInterface.a lib/libMLIRDestinationStyleOpInterface.a lib/libMLIRRewrite.a lib/libMLIRRewritePDL.a lib/libMLIRPDLToPDLInterp.a lib/libMLIRPDLInterpDialect.a lib/libMLIRPDLDialect.a lib/libMLIRPass.a lib/libMLIRAnalysis.a lib/libMLIRCallInterfaces.a lib/libMLIRControlFlowInterfaces.a lib/libMLIRSideEffectInterfaces.a lib/libMLIRPresburger.a lib/libMLIRLoopLikeInterface.a lib/libMLIRViewLikeInterface.a lib/libMLIRInferIntRangeInterface.a lib/libMLIRFunctionInterfaces.a lib/libMLIRDataLayoutInterfaces.a lib/libMLIRInferTypeOpInterface.a lib/libMLIRIR.a lib/libMLIRSupport.a lib/libLLVMSupport.a -lrt -ldl -lm /usr/lib/x86_64-linux-gnu/libz.so lib/libLLVMDemangle.a && :
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `generatedTypeParser(mlir::AsmParser&, llvm::StringRef*, mlir::Type&)::{lambda(llvm::StringRef, llvm::SMLoc)#3}::operator()(llvm::StringRef, llvm::SMLoc) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:37: undefined reference to `mlir::LLVM::LLVMStructType::parse(mlir::AsmParser&)'
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `auto generatedTypePrinter(mlir::Type, mlir::AsmPrinter&)::{lambda(auto:1)#3}::operator()<mlir::LLVM::LLVMStructType>(mlir::LLVM::LLVMStructType) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:79: undefined reference to `mlir::LLVM::LLVMStructType::print(mlir::AsmPrinter&) const'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.