================ @@ -3311,11 +3312,22 @@ ASTReader::ReadControlBlock(ModuleFile &F, SignatureBytes.end()); Blob = Blob.substr(ASTFileSignature::size); + // Use BaseDirectoryAsWritten to ensure we use the same path in the + // ModuleCache as when writing. + StoredFile = ReadPathBlob(BaseDirectoryAsWritten, Record, Idx, Blob); if (ImportedFile.empty()) { - // Use BaseDirectoryAsWritten to ensure we use the same path in the - // ModuleCache as when writing. - ImportedFile = - ReadPathBlob(BaseDirectoryAsWritten, Record, Idx, Blob); + ImportedFile = StoredFile; + } else { + auto ImportedFileRef = + PP.getFileManager().getOptionalFileRef(ImportedFile); + auto StoredFileRef = + PP.getFileManager().getOptionalFileRef(StoredFile); + if ((ImportedFileRef && StoredFileRef) && + (*ImportedFileRef != *StoredFileRef)) { + Diag(diag::warn_lazy_pcm_mismatch) << ImportedFile << StoredFile; + Diag(diag::note_module_file_imported_by) ---------------- jansvoboda11 wrote:
Could we avoid this by having something like this up top? ```c++ auto NoteImportedByOnce = [&, NotedAlready = false] mutable { if (NotedAlready) return; Diag(diag::note_module_file_imported_by) << F.FileName << !F.ModuleName.empty() << F.ModuleName; NotedAlready = true; }; ``` And then calling it whenever needed? https://github.com/llvm/llvm-project/pull/137068 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits