@@ -899,8 +899,56 @@ static void createFineModuleTraceFile(CompilerInstance &instance,
899899 }
900900}
901901
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+
902947bool swift::emitFineModuleTraceIfNeeded (CompilerInstance &Instance,
903948 const FrontendOptions &opts) {
949+ if (!shouldActionTypeEmitFineModuleTrace (opts.RequestedAction )) {
950+ return false ;
951+ }
904952 ModuleDecl *mainModule = Instance.getMainModule ();
905953 ASTContext &ctxt = mainModule->getASTContext ();
906954 assert (!ctxt.hadError () &&
0 commit comments