@@ -899,8 +899,56 @@ static void createFineModuleTraceFile(CompilerInstance &instance,
899
899
}
900
900
}
901
901
902
+ static bool shouldActionTypeEmitFineModuleTrace (FrontendOptions::ActionType action) {
903
+ // Only full compilation jobs should emit fine module tracing file.
904
+ // Other partial compilation jobs, such as emitting modules, only typecheck partially
905
+ // so walking into every function bodies may be risky.
906
+ switch (action) {
907
+ case swift::FrontendOptions::ActionType::Typecheck:
908
+ case swift::FrontendOptions::ActionType::EmitSILGen:
909
+ case swift::FrontendOptions::ActionType::EmitSIL:
910
+ case swift::FrontendOptions::ActionType::EmitAssembly:
911
+ case swift::FrontendOptions::ActionType::EmitLoweredSIL:
912
+ case swift::FrontendOptions::ActionType::EmitIRGen:
913
+ case swift::FrontendOptions::ActionType::EmitIR:
914
+ case swift::FrontendOptions::ActionType::EmitBC:
915
+ case swift::FrontendOptions::ActionType::EmitObject:
916
+ return true ;
917
+ case swift::FrontendOptions::ActionType::NoneAction:
918
+ case swift::FrontendOptions::ActionType::Parse:
919
+ case swift::FrontendOptions::ActionType::ResolveImports:
920
+ case swift::FrontendOptions::ActionType::DumpParse:
921
+ case swift::FrontendOptions::ActionType::DumpInterfaceHash:
922
+ case swift::FrontendOptions::ActionType::DumpAST:
923
+ case swift::FrontendOptions::ActionType::PrintAST:
924
+ case swift::FrontendOptions::ActionType::PrintASTDecl:
925
+ case swift::FrontendOptions::ActionType::DumpScopeMaps:
926
+ case swift::FrontendOptions::ActionType::DumpAvailabilityScopes:
927
+ case swift::FrontendOptions::ActionType::EmitImportedModules:
928
+ case swift::FrontendOptions::ActionType::EmitPCH:
929
+ case swift::FrontendOptions::ActionType::EmitModuleOnly:
930
+ case swift::FrontendOptions::ActionType::MergeModules:
931
+ case swift::FrontendOptions::ActionType::CompileModuleFromInterface:
932
+ case swift::FrontendOptions::ActionType::TypecheckModuleFromInterface:
933
+ case swift::FrontendOptions::ActionType::EmitSIBGen:
934
+ case swift::FrontendOptions::ActionType::EmitSIB:
935
+ case swift::FrontendOptions::ActionType::Immediate:
936
+ case swift::FrontendOptions::ActionType::REPL:
937
+ case swift::FrontendOptions::ActionType::DumpTypeInfo:
938
+ case swift::FrontendOptions::ActionType::EmitPCM:
939
+ case swift::FrontendOptions::ActionType::DumpPCM:
940
+ case swift::FrontendOptions::ActionType::ScanDependencies:
941
+ case swift::FrontendOptions::ActionType::PrintVersion:
942
+ case swift::FrontendOptions::ActionType::PrintFeature:
943
+ return false ;
944
+ }
945
+ }
946
+
902
947
bool swift::emitFineModuleTraceIfNeeded (CompilerInstance &Instance,
903
948
const FrontendOptions &opts) {
949
+ if (!shouldActionTypeEmitFineModuleTrace (opts.RequestedAction )) {
950
+ return false ;
951
+ }
904
952
ModuleDecl *mainModule = Instance.getMainModule ();
905
953
ASTContext &ctxt = mainModule->getASTContext ();
906
954
assert (!ctxt.hadError () &&
0 commit comments