Author: Jan Svoboda Date: 2022-12-01T21:39:51-08:00 New Revision: f0ce827c6972009c5052f8447c6aadf4e4be6113
URL: https://github.com/llvm/llvm-project/commit/f0ce827c6972009c5052f8447c6aadf4e4be6113 DIFF: https://github.com/llvm/llvm-project/commit/f0ce827c6972009c5052f8447c6aadf4e4be6113.diff LOG: Revert "[clang][modules][deps] Including module maps are affecting" This reverts commit 83973cf157f7850eb133a4bbfa0f8b7958bad215. Added: Modified: clang/lib/Serialization/ASTWriter.cpp Removed: clang/test/ClangScanDeps/modules-extern-unrelated.m ################################################################################ diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 458e88d3688d..1f5de568b3ba 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -161,14 +161,12 @@ static TypeCode getTypeCodeForTypeClass(Type::TypeClass id) { namespace { -std::set<const FileEntry *> GetAffectingModuleMaps(const Preprocessor &PP, +std::set<const FileEntry *> GetAffectingModuleMaps(const HeaderSearch &HS, Module *RootModule) { std::set<const FileEntry *> ModuleMaps{}; std::set<const Module *> ProcessedModules; SmallVector<const Module *> ModulesToProcess{RootModule}; - const HeaderSearch &HS = PP.getHeaderSearchInfo(); - SmallVector<const FileEntry *, 16> FilesByUID; HS.getFileMgr().GetUniqueIDMapping(FilesByUID); @@ -193,27 +191,12 @@ std::set<const FileEntry *> GetAffectingModuleMaps(const Preprocessor &PP, } const ModuleMap &MM = HS.getModuleMap(); - SourceManager &SourceMgr = PP.getSourceManager(); - - auto ForIncludeChain = [&](FileEntryRef F, - llvm::function_ref<void(FileEntryRef)> CB) { - CB(F); - FileID FID = SourceMgr.translateFile(F); - SourceLocation Loc = SourceMgr.getIncludeLoc(FID); - while (Loc.isValid()) { - FID = SourceMgr.getFileID(Loc); - CB(*SourceMgr.getFileEntryRefForID(FID)); - Loc = SourceMgr.getIncludeLoc(FID); - } - }; auto ProcessModuleOnce = [&](const Module *M) { for (const Module *Mod = M; Mod; Mod = Mod->Parent) if (ProcessedModules.insert(Mod).second) if (auto ModuleMapFile = MM.getModuleMapFileForUniquing(Mod)) - ForIncludeChain(*ModuleMapFile, [&](FileEntryRef F) { - ModuleMaps.insert(F); - }); + ModuleMaps.insert(*ModuleMapFile); }; for (const Module *CurrentModule : ModulesToProcess) { @@ -4562,7 +4545,8 @@ void ASTWriter::collectNonAffectingInputFiles() { if (!WritingModule) return; - auto AffectingModuleMaps = GetAffectingModuleMaps(*PP, WritingModule); + auto AffectingModuleMaps = + GetAffectingModuleMaps(PP->getHeaderSearchInfo(), WritingModule); unsigned FileIDAdjustment = 0; unsigned OffsetAdjustment = 0; diff --git a/clang/test/ClangScanDeps/modules-extern-unrelated.m b/clang/test/ClangScanDeps/modules-extern-unrelated.m deleted file mode 100644 index bcdd822e3e4e..000000000000 --- a/clang/test/ClangScanDeps/modules-extern-unrelated.m +++ /dev/null @@ -1,135 +0,0 @@ -// RUN: rm -rf %t -// RUN: split-file %s %t - -//--- tu.m -@import zeroth; - -//--- zeroth/module.modulemap -module zeroth { header "zeroth.h" } -//--- zeroth/zeroth.h -@import first; -#include "second.h" - -//--- first/module.modulemap -module first {} -module first_other { header "first_other.h" } -//--- first/first_other.h - -//--- second/module.modulemap -extern module second "second.modulemap" -//--- second/second.modulemap -module second { header "second.h" } -//--- second/second.h -#include "first_other.h" - -//--- cdb.json.template -[{ - "directory": "DIR", - "file": "DIR/tu.m", - "command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR/zeroth -I DIR/first -I DIR/second -c DIR/tu.m -o DIR/tu.o" -}] - -// RUN: sed -e "s|DIR|%/t|g" -e "s|INPUTS|%/S/Inputs|g" %t/cdb.json.template > %t/cdb.json -// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json -// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t - -// CHECK: { -// CHECK-NEXT: "modules": [ -// CHECK-NEXT: { -// CHECK-NEXT: "clang-module-deps": [], -// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/module.modulemap", -// CHECK-NEXT: "command-line": [ -// CHECK: ], -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "file-deps": [ -// CHECK-NEXT: "[[PREFIX]]/first/module.modulemap" -// CHECK-NEXT: ], -// CHECK-NEXT: "name": "first" -// CHECK-NEXT: }, -// CHECK-NEXT: { -// CHECK-NEXT: "clang-module-deps": [], -// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/module.modulemap", -// CHECK-NEXT: "command-line": [ -// CHECK: ], -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "file-deps": [ -// CHECK-NEXT: "[[PREFIX]]/first/first_other.h", -// CHECK-NEXT: "[[PREFIX]]/first/module.modulemap" -// CHECK-NEXT: ], -// CHECK-NEXT: "name": "first_other" -// CHECK-NEXT: }, -// CHECK-NEXT: { -// CHECK-NEXT: "clang-module-deps": [ -// CHECK-NEXT: { -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "module-name": "first_other" -// CHECK-NEXT: } -// CHECK-NEXT: ], -// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/second/second.modulemap", -// CHECK-NEXT: "command-line": [ -// CHECK: ], -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "file-deps": [ -// CHECK-NEXT: "[[PREFIX]]/first/module.modulemap", -// CHECK-NEXT: "[[PREFIX]]/second/second.h", -// CHECK-NEXT: "[[PREFIX]]/second/second.modulemap" -// CHECK-NEXT: ], -// CHECK-NEXT: "name": "second" -// CHECK-NEXT: }, -// CHECK-NEXT: { -// CHECK-NEXT: "clang-module-deps": [ -// CHECK-NEXT: { -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "module-name": "first" -// CHECK-NEXT: }, -// CHECK-NEXT: { -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "module-name": "second" -// CHECK-NEXT: } -// CHECK-NEXT: ], -// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/zeroth/module.modulemap", -// CHECK-NEXT: "command-line": [ -// CHECK: ], -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "file-deps": [ -// CHECK-NEXT: "[[PREFIX]]/first/module.modulemap", -// CHECK-NEXT: "[[PREFIX]]/second/module.modulemap", -// CHECK-NEXT: "[[PREFIX]]/second/second.modulemap", -// CHECK-NEXT: "[[PREFIX]]/zeroth/module.modulemap", -// CHECK-NEXT: "[[PREFIX]]/zeroth/zeroth.h" -// CHECK-NEXT: ], -// CHECK-NEXT: "name": "zeroth" -// CHECK-NEXT: } -// CHECK-NEXT: ], -// CHECK-NEXT: "translation-units": [ -// CHECK-NEXT: { -// CHECK-NEXT: "commands": [ -// CHECK-NEXT: { -// CHECK-NEXT: "clang-context-hash": "{{.*}}", -// CHECK-NEXT: "clang-module-deps": [ -// CHECK-NEXT: { -// CHECK-NEXT: "context-hash": "{{.*}}", -// CHECK-NEXT: "module-name": "zeroth" -// CHECK-NEXT: } -// CHECK-NEXT: ], -// CHECK-NEXT: "command-line": [ -// CHECK: ], -// CHECK-NEXT: "executable": "clang", -// CHECK-NEXT: "file-deps": [ -// CHECK-NEXT: "[[PREFIX]]/tu.m" -// CHECK-NEXT: ], -// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.m" -// CHECK-NEXT: } -// CHECK-NEXT: ] -// CHECK-NEXT: } -// CHECK-NEXT: ] -// CHECK-NEXT: } - -// RUN: %deps-to-rsp --module-name=first %t/result.json > %t/first.cc1.rsp -// RUN: %deps-to-rsp --module-name=first_other %t/result.json > %t/first_other.cc1.rsp -// RUN: %deps-to-rsp --module-name=second %t/result.json > %t/second.cc1.rsp -// RUN: %deps-to-rsp --module-name=zeroth %t/result.json > %t/zeroth.cc1.rsp -// RUN: %clang @%t/first.cc1.rsp -// RUN: %clang @%t/first_other.cc1.rsp -// RUN: %clang @%t/second.cc1.rsp -// RUN: %clang @%t/zeroth.cc1.rsp _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits