Skip to content

Commit e313169

Browse files
authored
Merge pull request #68152 from artemcm/NoIndexRebuilOnExplicitBuild
[Explicit Module Builds] Do not attempt to re-load module dependency from interface for index.
2 parents fce0d33 + e0275f4 commit e313169

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

include/swift/Index/IndexRecord.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ bool indexAndRecord(SourceFile *primarySourceFile, StringRef indexUnitToken,
5757
StringRef indexStorePath, bool indexClangModules,
5858
bool indexSystemModules, bool skipStdlib,
5959
bool includeLocals, bool isDebugCompilation,
60-
StringRef targetTriple,
60+
bool isExplicitModuleBuild, StringRef targetTriple,
6161
const DependencyTracker &dependencyTracker,
6262
const PathRemapper &pathRemapper);
6363

@@ -99,7 +99,8 @@ bool indexAndRecord(ModuleDecl *module, ArrayRef<std::string> indexUnitTokens,
9999
StringRef moduleUnitToken, StringRef indexStorePath,
100100
bool indexClangModules, bool indexSystemModules,
101101
bool skipStdlib, bool includeLocals,
102-
bool isDebugCompilation, StringRef targetTriple,
102+
bool isDebugCompilation, bool isExplicitModuleBuild,
103+
StringRef targetTriple,
103104
const DependencyTracker &dependencyTracker,
104105
const PathRemapper &pathRemapper);
105106
// FIXME: indexUnitTokens could be StringRef, but that creates an impedance

lib/FrontendTool/FrontendTool.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1911,6 +1911,7 @@ static void emitIndexDataForSourceFile(SourceFile *PrimarySourceFile,
19111911
opts.IndexIgnoreStdlib,
19121912
opts.IndexIncludeLocals,
19131913
isDebugCompilation,
1914+
opts.DisableImplicitModules,
19141915
Invocation.getTargetTriple(),
19151916
*Instance.getDependencyTracker(),
19161917
Invocation.getIRGenOptions().FilePrefixMap);
@@ -1929,6 +1930,7 @@ static void emitIndexDataForSourceFile(SourceFile *PrimarySourceFile,
19291930
opts.IndexIgnoreStdlib,
19301931
opts.IndexIncludeLocals,
19311932
isDebugCompilation,
1933+
opts.DisableImplicitModules,
19321934
Invocation.getTargetTriple(),
19331935
*Instance.getDependencyTracker(),
19341936
Invocation.getIRGenOptions().FilePrefixMap);

lib/Index/IndexRecord.cpp

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
395395
bool indexSystemModules,
396396
bool skipStdlib,
397397
bool includeLocals,
398+
bool explicitModulebuild,
398399
StringRef targetTriple,
399400
const clang::CompilerInstance &clangCI,
400401
DiagnosticEngine &diags,
@@ -598,6 +599,7 @@ static void addModuleDependencies(ArrayRef<ImportedModule> imports,
598599
bool indexSystemModules,
599600
bool skipStdlib,
600601
bool includeLocals,
602+
bool explicitModuleBuild,
601603
StringRef targetTriple,
602604
const clang::CompilerInstance &clangCI,
603605
DiagnosticEngine &diags,
@@ -674,7 +676,9 @@ static void addModuleDependencies(ArrayRef<ImportedModule> imports,
674676
emitDataForSwiftSerializedModule(mod, indexStorePath,
675677
indexClangModules,
676678
indexSystemModules, skipStdlib,
677-
includeLocals, targetTriple,
679+
includeLocals,
680+
explicitModuleBuild,
681+
targetTriple,
678682
clangCI, diags,
679683
unitWriter,
680684
pathRemapper,
@@ -719,6 +723,7 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
719723
bool indexSystemModules,
720724
bool skipStdlib,
721725
bool includeLocals,
726+
bool explicitModuleBuild,
722727
StringRef targetTriple,
723728
const clang::CompilerInstance &clangCI,
724729
DiagnosticEngine &diags,
@@ -747,7 +752,9 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
747752
// Reload resilient modules from swiftinterface to avoid indexing
748753
// internal details.
749754
bool skipIndexingModule = false;
750-
if (module->getResilienceStrategy() == ResilienceStrategy::Resilient &&
755+
// Note, we are unable to reload from interface on an explicit module build
756+
if (!explicitModuleBuild &&
757+
module->getResilienceStrategy() == ResilienceStrategy::Resilient &&
751758
!module->isBuiltFromInterface() &&
752759
!module->isStdlibModule()) {
753760
module->getASTContext().setIgnoreAdjacentModules(true);
@@ -867,6 +874,7 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
867874
StringScratchSpace moduleNameScratch;
868875
addModuleDependencies(imports, indexStorePath, indexClangModules,
869876
indexSystemModules, skipStdlib, includeLocals,
877+
explicitModuleBuild,
870878
targetTriple, clangCI, diags, unitWriter,
871879
moduleNameScratch, pathRemapper, initialFile);
872880

@@ -883,7 +891,7 @@ recordSourceFileUnit(SourceFile *primarySourceFile, StringRef indexUnitToken,
883891
StringRef indexStorePath, bool indexClangModules,
884892
bool indexSystemModules, bool skipStdlib,
885893
bool includeLocals, bool isDebugCompilation,
886-
StringRef targetTriple,
894+
bool isExplicitModuleBuild, StringRef targetTriple,
887895
ArrayRef<const clang::FileEntry *> fileDependencies,
888896
const clang::CompilerInstance &clangCI,
889897
const PathRemapper &pathRemapper,
@@ -909,8 +917,9 @@ recordSourceFileUnit(SourceFile *primarySourceFile, StringRef indexUnitToken,
909917
StringScratchSpace moduleNameScratch;
910918
addModuleDependencies(imports, indexStorePath, indexClangModules,
911919
indexSystemModules, skipStdlib, includeLocals,
912-
targetTriple, clangCI, diags, unitWriter,
913-
moduleNameScratch, pathRemapper, primarySourceFile);
920+
isExplicitModuleBuild, targetTriple, clangCI, diags,
921+
unitWriter, moduleNameScratch, pathRemapper,
922+
primarySourceFile);
914923

915924
// File dependencies.
916925
for (auto *F : fileDependencies)
@@ -965,6 +974,7 @@ bool index::indexAndRecord(SourceFile *primarySourceFile,
965974
bool skipStdlib,
966975
bool includeLocals,
967976
bool isDebugCompilation,
977+
bool isExplicitModuleBuild,
968978
StringRef targetTriple,
969979
const DependencyTracker &dependencyTracker,
970980
const PathRemapper &pathRemapper) {
@@ -994,8 +1004,8 @@ bool index::indexAndRecord(SourceFile *primarySourceFile,
9941004
return recordSourceFileUnit(primarySourceFile, indexUnitToken,
9951005
indexStorePath, indexClangModules,
9961006
indexSystemModules, skipStdlib, includeLocals,
997-
isDebugCompilation, targetTriple,
998-
fileDependencies.getArrayRef(),
1007+
isDebugCompilation, isExplicitModuleBuild,
1008+
targetTriple, fileDependencies.getArrayRef(),
9991009
clangCI, pathRemapper, diags);
10001010
}
10011011

@@ -1008,6 +1018,7 @@ bool index::indexAndRecord(ModuleDecl *module,
10081018
bool skipStdlib,
10091019
bool includeLocals,
10101020
bool isDebugCompilation,
1021+
bool isExplicitModuleBuild,
10111022
StringRef targetTriple,
10121023
const DependencyTracker &dependencyTracker,
10131024
const PathRemapper &pathRemapper) {
@@ -1045,8 +1056,8 @@ bool index::indexAndRecord(ModuleDecl *module,
10451056
if (recordSourceFileUnit(SF, indexUnitTokens[unitIndex],
10461057
indexStorePath, indexClangModules,
10471058
indexSystemModules, skipStdlib, includeLocals,
1048-
isDebugCompilation, targetTriple,
1049-
fileDependencies.getArrayRef(),
1059+
isDebugCompilation, isExplicitModuleBuild,
1060+
targetTriple, fileDependencies.getArrayRef(),
10501061
clangCI, pathRemapper, diags))
10511062
return true;
10521063
unitIndex += 1;

tools/SourceKit/lib/SwiftLang/SwiftIndexing.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ static void emitIndexDataForSourceFile(SourceFile &PrimarySourceFile,
395395
Opts.IndexIgnoreStdlib,
396396
Opts.IndexIncludeLocals,
397397
isDebugCompilation,
398+
Opts.DisableImplicitModules,
398399
Invocation.getTargetTriple(),
399400
*Instance.getDependencyTracker(),
400401
Invocation.getIRGenOptions().FilePrefixMap);

0 commit comments

Comments
 (0)