[Caching] Add fast swift instance setup for cache replay

Add a fast path to create swift CompilerInstance when it is only used to
replay output when there is a cache hit. The normal `setup` function is
very expensive to call, especially in cache mode to setup inputs, and it
needs to be called once per input file from libSwiftScan API due to the
current caching granularity.

The fast path will only construct the part that is needed for output
replay, including the CAS, the output backend and caching diagnostic
processor.

rdar://127062609
This commit is contained in:
Steven Wu
2024-04-25 12:31:22 -07:00
parent 3fe8b713d4
commit facfe45bf5
3 changed files with 23 additions and 1 deletions

View File

@@ -932,7 +932,8 @@ static llvm::Error replayCompilation(SwiftScanReplayInstance &Instance,
Invocation.getDiagnosticOptions().EmitMacroExpansionFiles);
std::string InstanceSetupError;
if (Inst.setup(Instance.Invocation, InstanceSetupError, Instance.Args))
if (Inst.setupForReplay(Instance.Invocation, InstanceSetupError,
Instance.Args))
return createStringError(inconvertibleErrorCode(), InstanceSetupError);
auto *CDP = Inst.getCachingDiagnosticsProcessor();