================
@@ -6067,14 +6062,21 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F,
if (OptionalFileEntryRef CurFile = CurrentModule->getASTFile()) {
// Don't emit module relocation error if we have -fno-validate-pch
if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation &
- DisableValidationForModuleKind::Module) &&
- CurFile != F.File) {
- auto ConflictError =
- PartialDiagnostic(diag::err_module_file_conflict,
- ContextObj->DiagAllocator)
+ DisableValidationForModuleKind::Module)) {
+ assert(CurFile != F.File && "ModuleManager did not de-duplicate");
+
+ Diag(diag::err_module_file_conflict)
<< CurrentModule->getTopLevelModuleName() << CurFile->getName()
<< F.File.getName();
- return DiagnosticError::create(CurrentImportLoc, ConflictError);
+
+ auto CurModMapFile =
+ ModMap.getContainingModuleMapFile(CurrentModule);
+ auto ModMapFile = FileMgr.getOptionalFileRef(F.ModuleMapPath);
+ if (CurModMapFile && ModMapFile && CurModMapFile != ModMapFile)
----------------
cyndyishida wrote:
When do the file references return false in practice? If the file was deleted
or something during the build? If so, so it may still be helpful to print out
where the modulemap was expected to be (or where it was when the module was
created)
https://github.com/llvm/llvm-project/pull/134475
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits