[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 19:14:18 PDT 2025


llvm-ci wrote:

LLVM Buildbot has detected a new failure on builder `ppc64le-flang-rhel-clang` running on `ppc64le-flang-rhel-test` while building `clang` at step 5 "build-unified-tree".

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

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

```
Step 5 (build-unified-tree) failure: build (failure)
...
82.263 [79/7/6859] Building CXX object tools/clang/lib/CodeGen/CMakeFiles/obj.clangCodeGen.dir/TargetBuiltins/RISCV.cpp.o
89.736 [79/6/6860] Building CXX object tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaExpr.cpp.o
97.099 [79/5/6861] Building CXX object tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o
109.769 [79/4/6862] Building CXX object tools/clang/lib/ASTMatchers/Dynamic/CMakeFiles/obj.clangDynamicASTMatchers.dir/Registry.cpp.o
115.089 [79/3/6863] Building CXX object tools/flang/lib/Frontend/CMakeFiles/flangFrontend.dir/FrontendActions.cpp.o
174.812 [79/2/6864] Building CXX object tools/flang/lib/Frontend/CMakeFiles/flangFrontend.dir/ParserActions.cpp.o
174.837 [78/2/6865] Linking CXX static library lib/libflangFrontend.a
174.859 [76/3/6866] Linking CXX static library lib/libflangFrontendTool.a
176.611 [75/3/6867] Linking CXX executable bin/bbc
177.123 [75/2/6868] Linking CXX executable bin/flang-22
FAILED: bin/flang-22 
: && /home/buildbots/llvm-external-buildbots/clang.19.1.7/bin/clang++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Werror -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -Xclang -fno-pch-timestamp -O3 -DNDEBUG -Wl,--color-diagnostics   -Wl,--export-dynamic  -Wl,--gc-sections  -Xlinker --dependency-file=tools/flang/tools/flang-driver/CMakeFiles/flang.dir/link.d 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/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/./lib:"  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMMC.a  lib/libLLVMOption.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  lib/libflangFrontend.a  lib/libflangFrontendTool.a  lib/libclangDriver.a  lib/libclangBasic.a  lib/libLLVMMCDisassembler.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/libLLVMAsmPrinter.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/libMLIRSparseT
  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/libMLIRTargetLLVM.a  lib/libMLIRExecutionEngineUtils.a  lib/libLLVMPasses.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMCodeGen.a  lib/libLLVMCGData.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMTarget.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCFGuard.a  lib/libLLVMHipStdPar.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/lib
LIRPDLDialect.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/libLLVMWindowsDriver.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/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMBitReader.a  lib/libLLVMTextAPI.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.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  -lrt  -ldl  -lm  /usr/lib64/libz.so  /usr/lib64/libzstd.so  lib/libLLVMDemangle.a  -lpthread && :
ld.lld: error: undefined symbol: clang::scanInputForCXX20ModulesUsage(llvm::StringRef)
>>> referenced by Driver.cpp
>>>               Driver.cpp.o:(clang::driver::Driver::ScanInputsForCXX20ModulesUsage(llvm::SmallVector<std::pair<clang::driver::types::ID, llvm::opt::Arg const*>, 16u> const&) const) in archive lib/libclangDriver.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
348.378 [75/1/6869] Building CXX object tools/clang/lib/AST/CMakeFiles/obj.clangAST.dir/ByteCode/Disasm.cpp.o
ninja: build stopped: subcommand failed.

```

</details>

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


More information about the cfe-commits mailing list