@@ -411,6 +411,51 @@ SupplementaryOutputPathsComputer::getSupplementaryFilenamesFromArguments(
411411 return std::nullopt ;
412412}
413413
414+ static bool shouldEmitFineModuleTrace (FrontendOptions::ActionType action) {
415+ // Only full compilation jobs should emit fine module tracing file.
416+ // Other partial compilation jobs, such as emitting modules, only typecheck partially
417+ // so walking into every function bodies may be risky.
418+ switch (action) {
419+ case swift::FrontendOptions::ActionType::Typecheck:
420+ case swift::FrontendOptions::ActionType::EmitSILGen:
421+ case swift::FrontendOptions::ActionType::EmitSIL:
422+ case swift::FrontendOptions::ActionType::EmitAssembly:
423+ case swift::FrontendOptions::ActionType::EmitLoweredSIL:
424+ case swift::FrontendOptions::ActionType::EmitIRGen:
425+ case swift::FrontendOptions::ActionType::EmitIR:
426+ case swift::FrontendOptions::ActionType::EmitBC:
427+ case swift::FrontendOptions::ActionType::EmitObject:
428+ return true ;
429+ case swift::FrontendOptions::ActionType::NoneAction:
430+ case swift::FrontendOptions::ActionType::Parse:
431+ case swift::FrontendOptions::ActionType::ResolveImports:
432+ case swift::FrontendOptions::ActionType::DumpParse:
433+ case swift::FrontendOptions::ActionType::DumpInterfaceHash:
434+ case swift::FrontendOptions::ActionType::DumpAST:
435+ case swift::FrontendOptions::ActionType::PrintAST:
436+ case swift::FrontendOptions::ActionType::PrintASTDecl:
437+ case swift::FrontendOptions::ActionType::DumpScopeMaps:
438+ case swift::FrontendOptions::ActionType::DumpAvailabilityScopes:
439+ case swift::FrontendOptions::ActionType::EmitImportedModules:
440+ case swift::FrontendOptions::ActionType::EmitPCH:
441+ case swift::FrontendOptions::ActionType::EmitModuleOnly:
442+ case swift::FrontendOptions::ActionType::MergeModules:
443+ case swift::FrontendOptions::ActionType::CompileModuleFromInterface:
444+ case swift::FrontendOptions::ActionType::TypecheckModuleFromInterface:
445+ case swift::FrontendOptions::ActionType::EmitSIBGen:
446+ case swift::FrontendOptions::ActionType::EmitSIB:
447+ case swift::FrontendOptions::ActionType::Immediate:
448+ case swift::FrontendOptions::ActionType::REPL:
449+ case swift::FrontendOptions::ActionType::DumpTypeInfo:
450+ case swift::FrontendOptions::ActionType::EmitPCM:
451+ case swift::FrontendOptions::ActionType::DumpPCM:
452+ case swift::FrontendOptions::ActionType::ScanDependencies:
453+ case swift::FrontendOptions::ActionType::PrintVersion:
454+ case swift::FrontendOptions::ActionType::PrintFeature:
455+ return false ;
456+ }
457+ }
458+
414459std::optional<SupplementaryOutputPaths>
415460SupplementaryOutputPathsComputer::computeOutputPathsForOneInput (
416461 StringRef outputFile, const SupplementaryOutputPaths &pathsFromArguments,
@@ -461,7 +506,9 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
461506 // SWIFT_COMPILER_FINE_GRAINED_TRACE_PATH.
462507 // FIXME: we probably need to move this to a frontend argument.
463508 llvm::SmallString<128 > FineModuleTracePath;
464- if (!loadedModuleTracePath.empty ()) {
509+ if (!loadedModuleTracePath.empty () &&
510+ shouldEmitFineModuleTrace (RequestedAction) &&
511+ !Args.hasArg (OPT_disable_fine_module_tracing)) {
465512 if (const char *P = ::getenv (" SWIFT_COMPILER_FINE_GRAINED_TRACE_PATH" )) {
466513 StringRef FilePath = P;
467514 llvm::sys::path::append (FineModuleTracePath, FilePath);
0 commit comments