@@ -646,31 +646,6 @@ public struct Driver {
646646 diagnosticEngine: diagnosticsEngine,
647647 compilerMode: compilerMode)
648648
649- let cachingEnabled = parsedOptions. hasArgument ( . cacheCompileJob) || env. keys. contains ( " SWIFT_ENABLE_CACHING " )
650- if cachingEnabled {
651- if !parsedOptions. hasArgument ( . driverExplicitModuleBuild) {
652- diagnosticsEngine. emit ( . warning( " -cache-compile-job cannot be used without explicit module build, turn off caching " ) ,
653- location: nil )
654- self . enableCaching = false
655- } else {
656- self . enableCaching = true
657- }
658- } else {
659- self . enableCaching = false
660- }
661- self . useClangIncludeTree = !parsedOptions. hasArgument ( . noClangIncludeTree) && !env. keys. contains ( " SWIFT_CACHING_USE_CLANG_CAS_FS " )
662- self . scannerPrefixMap = try Self . computeScanningPrefixMapper ( & parsedOptions)
663- if let sdkMapping = parsedOptions. getLastArgument ( . scannerPrefixMapSdk) ? . asSingle {
664- self . scannerPrefixMapSDK = try AbsolutePath ( validating: sdkMapping)
665- } else {
666- self . scannerPrefixMapSDK = nil
667- }
668- if let toolchainMapping = parsedOptions. getLastArgument ( . scannerPrefixMapToolchain) ? . asSingle {
669- self . scannerPrefixMapToolchain = try AbsolutePath ( validating: toolchainMapping)
670- } else {
671- self . scannerPrefixMapToolchain = nil
672- }
673-
674649 // Compute the working directory.
675650 workingDirectory = try parsedOptions. getLastArgument ( . workingDirectory) . map { workingDirectoryArg in
676651 let cwd = fileSystem. currentWorkingDirectory
@@ -851,6 +826,36 @@ public struct Driver {
851826 }
852827 self . supportedFrontendFeatures = try Self . computeSupportedCompilerFeatures ( of: self . toolchain, env: env)
853828
829+ // Caching options.
830+ let cachingEnabled = parsedOptions. hasArgument ( . cacheCompileJob) || env. keys. contains ( " SWIFT_ENABLE_CACHING " )
831+ if cachingEnabled {
832+ if !parsedOptions. hasArgument ( . driverExplicitModuleBuild) {
833+ diagnosticsEngine. emit ( . warning( " -cache-compile-job cannot be used without explicit module build, turn off caching " ) ,
834+ location: nil )
835+ self . enableCaching = false
836+ } else if importedObjCHeader != nil && bridgingPrecompiledHeader == nil {
837+ diagnosticsEngine. emit ( . warning( " -cache-compile-job cannot be used with -disable-bridging-pch, turn off caching " ) ,
838+ location: nil )
839+ self . enableCaching = false
840+ } else {
841+ self . enableCaching = true
842+ }
843+ } else {
844+ self . enableCaching = false
845+ }
846+ self . useClangIncludeTree = !parsedOptions. hasArgument ( . noClangIncludeTree) && !env. keys. contains ( " SWIFT_CACHING_USE_CLANG_CAS_FS " )
847+ self . scannerPrefixMap = try Self . computeScanningPrefixMapper ( & parsedOptions)
848+ if let sdkMapping = parsedOptions. getLastArgument ( . scannerPrefixMapSdk) ? . asSingle {
849+ self . scannerPrefixMapSDK = try AbsolutePath ( validating: sdkMapping)
850+ } else {
851+ self . scannerPrefixMapSDK = nil
852+ }
853+ if let toolchainMapping = parsedOptions. getLastArgument ( . scannerPrefixMapToolchain) ? . asSingle {
854+ self . scannerPrefixMapToolchain = try AbsolutePath ( validating: toolchainMapping)
855+ } else {
856+ self . scannerPrefixMapToolchain = nil
857+ }
858+
854859 self . enabledSanitizers = try Self . parseSanitizerArgValues (
855860 & parsedOptions,
856861 diagnosticEngine: diagnosticEngine,
0 commit comments