@@ -411,6 +411,51 @@ SupplementaryOutputPathsComputer::getSupplementaryFilenamesFromArguments(
411
411
return std::nullopt;
412
412
}
413
413
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
+
414
459
std::optional<SupplementaryOutputPaths>
415
460
SupplementaryOutputPathsComputer::computeOutputPathsForOneInput (
416
461
StringRef outputFile, const SupplementaryOutputPaths &pathsFromArguments,
@@ -461,7 +506,9 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
461
506
// SWIFT_COMPILER_FINE_GRAINED_TRACE_PATH.
462
507
// FIXME: we probably need to move this to a frontend argument.
463
508
llvm::SmallString<128 > FineModuleTracePath;
464
- if (!loadedModuleTracePath.empty ()) {
509
+ if (!loadedModuleTracePath.empty () &&
510
+ shouldEmitFineModuleTrace (RequestedAction) &&
511
+ !Args.hasArg (OPT_disable_fine_module_tracing)) {
465
512
if (const char *P = ::getenv (" SWIFT_COMPILER_FINE_GRAINED_TRACE_PATH" )) {
466
513
StringRef FilePath = P;
467
514
llvm::sys::path::append (FineModuleTracePath, FilePath);
0 commit comments