================ @@ -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) ---------------- cyndyishida wrote:
e.g. ``` $ /Users/cishida/Builds/llvm-build/bin/clang -cc1 -internal-isystem /Users/cishida/Builds/llvm-build/lib/clang/21/include -nostdsysteminc -x c -fmodules -fno-implicit-modules -isysroot /Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/Sysroot -I/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/BuildDir -I/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/Sysroot/usr/include -fmodule-map-file=/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/BuildDir/A/module.modulemap -fmodule-map-file=/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/Sysroot/usr/include/B/module.modulemap -fmodule-file=A=/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/A-2.pcm -fmodule-file=B=/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/B-1.pcm /Users/cishida/Projects/llvm/monorepo/llvm-project/clang/test/Modules/invalid-module-dep.c -Wlazy-pcm-mismatch /Users/cishida/Projects/llvm/monorepo/llvm-project/clang/test/Modules/invalid-module-dep.c:38:2: warning: loaded module file '/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/A-2.pcm' conflicts with imported file '/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/A-1.pcm' [-Wlazy-pcm-mismatch] 38 | #include <B/B.h> | ^ /Users/cishida/Projects/llvm/monorepo/llvm-project/clang/test/Modules/invalid-module-dep.c:38:2: note: imported by module 'B' in '/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/B-1.pcm' /Users/cishida/Projects/llvm/monorepo/llvm-project/clang/test/Modules/invalid-module-dep.c:38:2: fatal error: module file '/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/A-2.pcm' is out of date and needs to be rebuilt: module file has a different size or mtime than expected 38 | #include <B/B.h> | ^ /Users/cishida/Projects/llvm/monorepo/llvm-project/clang/test/Modules/invalid-module-dep.c:38:2: note: imported by module 'B' in '/Users/cishida/Builds/llvm-build/tools/clang/test/Modules/Output/invalid-module-dep.c.tmp/B-1.pcm' 1 warning and 1 error generated. ``` 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