Skip to content

MLIR tools fail to build due to LLVMStructType #117927

Closed
@IgWod

Description

@IgWod

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions