[clang] Reland [clang][modules-driver] Add scanner to detect C++20 module presence (PR #147630)

LLVM Continuous Integration via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 21 13:51:36 PDT 2025


llvm-ci wrote:

LLVM Buildbot has detected a new failure on builder `openmp-offload-sles-build-only` running on `rocm-worker-hw-04-sles` while building `clang` at step 5 "compile-openmp".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/140/builds/27383

<details>
<summary>Here is the relevant piece of the build log for the reference</summary>

```
Step 5 (compile-openmp) failure: build (failure)
...
508.949 [28/6/7286] Linking CXX executable tools/flang/unittests/Evaluate/integer.test
508.967 [28/5/7287] Linking CXX executable tools/flang/unittests/Evaluate/real.test
510.000 [28/4/7288] Linking CXX executable tools/flang/unittests/Evaluate/expression.test
510.013 [28/3/7289] Linking CXX executable tools/flang/unittests/Evaluate/intrinsics.test
510.024 [28/2/7290] Linking CXX executable tools/flang/unittests/Evaluate/folding.test
510.130 [28/1/7291] Linking CXX static library lib/libFortranLower.a
510.221 [27/1/7292] Linking CXX static library lib/libflangFrontend.a
510.236 [25/2/7293] Linking CXX static library lib/libflangFrontendTool.a
518.806 [24/2/7294] Linking CXX executable bin/bbc
520.556 [24/1/7295] Linking CXX executable bin/flang-22
FAILED: bin/flang-22 
: && /usr/bin/c++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-ctad-maybe-unsupported -fno-semantic-interposition -fpch-preprocess -O3 -DNDEBUG -Wl,--export-dynamic  -Wl,-rpath-link,/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/./lib  -Wl,--gc-sections tools/flang/tools/flang-driver/CMakeFiles/flang.dir/driver.cpp.o tools/flang/tools/flang-driver/CMakeFiles/flang.dir/fc1_main.cpp.o -o bin/flang-22 -L/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/./lib:"  lib/libLLVMX86CodeGen.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86Desc.a  lib/libLLVMX86Disassembler.a  lib/libLLVMX86Info.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUDisassembler.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMMC.a  lib/libLLVMOption.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  -lpthread  lib/libflangFrontend.a  lib/libflangFrontendTool.a  lib/libclangDriver.a  lib/libclangBasic.a  lib/libLLVMMCDisassembler.a  lib/libflangFrontend.a  lib/libFortranLower.a  lib/libFortranSemantics.a  lib/libflangPasses.a  lib/libHLFIRTransforms.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libMLIRComplexToROCDLLibraryCalls.a  lib/libMLIRMathToFuncs.a  lib/libFIROpenACCSupport.a  lib/libFIROpenMPSupport.a  lib/libFlangOpenMPTransforms.a  lib/libFIRCodeGenDialect.a  lib/libFIRAnalysis.a  lib/libFIRBuilder.a  lib/libCUFDialect.a  lib/libFortranEvaluate.a  lib/libFortranParser.a  lib/libFortranSupport.a  lib/libFortranDecimal.a  lib/libFIRSupport.a  lib/libMLIROpenACCToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVMIRTranslation.a  lib/libHLFIRDialect.a  lib/libFIRDialect.a  lib/libFIRDialectSupport.a  lib/libMLIROpenMPToLLVM.a  lib/libCUFAttrs.a  lib/libLLVMExtensions.a  lib/libLLVMFrontendDriver.a  lib/libLLVMFrontendOpenACC.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRImport.a  lib/libMLIRAffineTransformOps.a  lib/libMLIRAMDGPUTransforms.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a  lib/libMLIRArmNeonVectorTransformOps.a  lib/libMLIRArmSMETransforms.a  lib/libMLIRArmSMEDialect.a  lib/libMLIRArmSVEVectorTransformOps.a  lib/libMLIRAsyncTransforms.a  lib/libMLIRBufferizationPipelines.a  lib/libMLIRBufferizationTransformOps.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIRDLTITransformOps.a  lib/libMLIREmitCTransforms.a  lib/libMLIREmitCDialect.a  lib/libMLIRFuncTransformOps.a  lib/libMLIRFuncUtils.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUToROCDLTransforms.a  lib/libMLIRMathToROCDL.a  lib/libMLIRAMDGPUToROCDL.a  lib/libMLIRAMDGPUUtils.a  lib/libMLIRGPUPipelines.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRNVVMToLLVM.a  lib/libMLIRVCIXDialect.a  lib/libMLIRMathTransforms.a  lib/libMLIRMemRefTransformOps.a  lib/libMLIRMLProgramTransforms.a  lib/libMLIRMLProgramDialect.a  lib/libMLIRMPIDialect.a  lib/libMLIRNVGPUUtils.a  lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUToNVVM.a  lib/libMLIRNVGPUTransforms.a  lib/libMLIROpenACCTransforms.a  lib/libMLIROpenACCDialect.a  lib/libMLIROpenMPDialect.a  lib/libMLIROpenACCMPCommon.a  lib/libMLIRPtrDialect.a  lib/libMLIRQuantTransforms.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRShapeDialect.a  lib/libMLIRSMT.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRAffineToStandard.a  lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRComplexDivisionConversion.a  lib/libMLIRMathToLLVM.a  lib/libMLIRMathToLibm.a  lib/libMLIRReconcileUnrealizedCasts.a  lib/libMLIRGPUToNVVMTransforms.a  lib/libMLIRGPUToGPURuntimeTransforms.a  lib/libMLIRGPUTransforms.a  lib/libMLIRAMDGPUDialect.a  lib/libMLIRXeVMDialect.a  lib/libMLIRAsyncToLLVM.a  lib/libMLIRAsyncDialect.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRArithToLLVM.a  lib/libMLIRControlFlowToLLVM.a  lib/libMLIRConvertToLLVMPass.a  lib/libMLIRConvertToLLVMInterface.a  lib/libMLIRComplexToLibm.a  lib/libMLIRMemRefToLLVM.a  lib/libMLIRUBToLLVM.a  lib/libMLIRVectorToLLVMPass.a  lib/libMLIRAMXTransforms.a  lib/libMLIRAMXDialect.a  lib/libMLIRArmNeonTransforms.a  lib/libMLIRArmNeonDialect.a  lib/libMLIRArmSVETransforms.a  lib/libMLIRArmSVEDialect.a  lib/libMLIRSparseTensorTransformOps.a  lib/libMLIRLinalgTransformOps.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRArithTransforms.a  lib/libMLIRFuncTransforms.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRMeshTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRLinalgUtils.a  lib/libMLIRTensorTransformOps.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRTosaTransforms.a  lib/libMLIRTransformDebugExtension.a  lib/libMLIRTransformDialectIRDLExtension.a  lib/libMLIRIRDL.a  lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a  lib/libMLIRTransformDialectTransforms.a  lib/libMLIRTransformTuneExtension.a  lib/libMLIRVectorTransformOps.a  lib/libMLIRTransformDialect.a  lib/libMLIRTransformDialectInterfaces.a  lib/libMLIRTransformDialectUtils.a  lib/libMLIRVectorToLLVM.a  lib/libMLIRArithAttrToLLVMConversion.a  lib/libMLIRVectorToSCF.a  lib/libMLIRX86VectorTransforms.a  lib/libMLIRX86VectorDialect.a  lib/libMLIRLLVMCommonConversion.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRSPIRVSerialization.a  lib/libMLIRSPIRVDialect.a  lib/libMLIRSPIRVImageInterfaces.a  lib/libMLIRSPIRVBinaryUtils.a  lib/libMLIRNVVMTarget.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMMIRParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMAMDGPUInfo.a  lib/libMLIRTargetLLVM.a  lib/libMLIRExecutionEngineUtils.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMCodeGen.a  lib/libLLVMCGData.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMIRPrinter.a  lib/libLLVMTarget.a  lib/libLLVMHipStdPar.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMInstrumentation.a  lib/libLLVMVectorize.a  lib/libLLVMSandboxIR.a  lib/libLLVMLinker.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRNVVMDialect.a  lib/libMLIRLLVMDialect.a  lib/libLLVMBitWriter.a  lib/libMLIRTranslateLib.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a  lib/libMLIRXeGPUTestPasses.a  lib/libMLIRXeGPUTransforms.a  lib/libMLIRIndexDialect.a  lib/libMLIRVectorTransforms.a  lib/libMLIRGPUUtils.a  lib/libMLIRGPUDialect.a  lib/libMLIRDLTIDialect.a  lib/libMLIRMemRefUtils.a  lib/libMLIRXeGPUUtils.a  lib/libMLIRSCFTransforms.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRTensorTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRTransforms.a  lib/libMLIRAffineUtils.a  lib/libMLIRLinalgDialect.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRMathDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRAsmParser.a  lib/libMLIRTensorUtils.a  lib/libMLIRVectorUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRSCFDialect.a  lib/libMLIRTilingInterface.a  lib/libMLIRTransformUtils.a  lib/libMLIRSubsetOpInterface.a  lib/libMLIRRewrite.a  lib/libMLIRRewritePDL.a  lib/libMLIRPDLToPDLInterp.a  lib/libMLIRPDLInterpDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRXeGPUDialect.a  lib/libMLIRVectorDialect.a  lib/libMLIRIndexingMapOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRFuncMeshShardingExtensions.a  lib/libMLIRFuncDialect.a  lib/libMLIRTensorAllExtensions.a  lib/libMLIRTensorMeshShardingExtensions.a  lib/libMLIRShardingInterface.a  lib/libMLIRMeshDialect.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRArithUtils.a  lib/libMLIRComplexDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRUBDialect.a  lib/libMLIRDialect.a  lib/libMLIRRuntimeVerifiableOpInterface.a  lib/libMLIRValueBoundsOpInterface.a  lib/libMLIRCastInterfaces.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRDestinationStyleOpInterface.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRDialectUtils.a  lib/libclangDriver.a  lib/libLLVMWindowsDriver.a  lib/libLLVMOption.a  lib/libclangBasic.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendDirective.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMTransformUtils.a  lib/libLLVMObjectYAML.a  lib/libLLVMFrontendAtomic.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoGSYM.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoDWARFLowLevel.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMBitReader.a  lib/libLLVMTextAPI.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libMLIRPass.a  lib/libMLIRAnalysis.a  lib/libMLIRLoopLikeInterface.a  lib/libMLIRFunctionInterfaces.a  lib/libMLIRSideEffectInterfaces.a  lib/libMLIRCallInterfaces.a  lib/libMLIRControlFlowInterfaces.a  lib/libMLIRInferTypeOpInterface.a  lib/libMLIRPresburger.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRIR.a  lib/libMLIRSupport.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib64/libz.so  /usr/lib64/libzstd.so  lib/libLLVMDemangle.a  -lpthread && :
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: lib/libclangDriver.a(Driver.cpp.o): in function `clang::driver::Driver::ScanInputsForCXX20ModulesUsage(llvm::SmallVector<std::pair<clang::driver::types::ID, llvm::opt::Arg const*>, 16u> const&) const [clone .localalias.26]':
Driver.cpp:(.text._ZNK5clang6driver6Driver30ScanInputsForCXX20ModulesUsageERKN4llvm11SmallVectorISt4pairINS0_5types2IDEPKNS2_3opt3ArgEELj16EEE+0xd1): undefined reference to `clang::scanInputForCXX20ModulesUsage(llvm::StringRef)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

```

</details>

https://github.com/llvm/llvm-project/pull/147630


More information about the cfe-commits mailing list