Don't propagate FDO to exec actions.

Benefits:

 - More efficient caching for exec actions (which shouldn't integrate FDO data)
 - simpler, more straightforward code
 - resolves outdated logic from before toolchain transitions (https://github.com/bazelbuild/proposals/blob/main/designs/2020-02-07-toolchain-transition-migration.md)

https://github.com/bazelbuild/bazel/issues/6516

PiperOrigin-RevId: 478011721
Change-Id: I8df049eeb78003fa9e979a91313e45cb9de95d01
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
index 2db6381..e0cc92d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
@@ -94,15 +94,13 @@
       LabelLateBoundDefault.fromTargetConfiguration(
           CppConfiguration.class,
           null,
-          (rule, attributes, cppConfig) ->
-              cppConfig.getFdoOptimizeLabelUnsafeSinceItCanReturnValueFromWrongConfiguration());
+          (rule, attributes, cppConfig) -> cppConfig.getFdoOptimizeLabel());
 
   private static final LabelLateBoundDefault<?> FDO_PROFILE_VALUE =
       LabelLateBoundDefault.fromTargetConfiguration(
           CppConfiguration.class,
           null,
-          (rule, attributes, cppConfig) ->
-              cppConfig.getFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration());
+          (rule, attributes, cppConfig) -> cppConfig.getFdoProfileLabel());
 
   private static final LabelLateBoundDefault<?> CSFDO_PROFILE_VALUE =
       LabelLateBoundDefault.fromTargetConfiguration(
@@ -114,8 +112,7 @@
       LabelLateBoundDefault.fromTargetConfiguration(
           CppConfiguration.class,
           null,
-          (rule, attributes, cppConfig) ->
-              cppConfig.getXFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration());
+          (rule, attributes, cppConfig) -> cppConfig.getXFdoProfileLabel());
 
   private static final LabelLateBoundDefault<?> FDO_PREFETCH_HINTS =
       LabelLateBoundDefault.fromTargetConfiguration(
@@ -134,20 +131,9 @@
    * enabled through --fdo_optimize or --fdo_profile
    */
   private static boolean shouldIncludeZipperInToolchain(CppConfiguration cppConfiguration) {
-    if (cppConfiguration.isToolConfigurationDoNotUseWillBeRemovedFor129045294()) {
-      // This is actually a bug, because with platforms, and before toolchain-transitions are
-      // implemented, all toolchains are analyzed in the host configuration. We're betting on
-      // nobody in the Bazel world actually using zipped fdo profiles and platforms at the same
-      // time, and if people do, they'll have to wait for toolchain-transitions. This needs to be
-      // fixed.
-      // TODO(b/129045294): Fix this once toolchain-transitions are implemented.
-      return false;
-    }
-    return cppConfiguration.getFdoOptimizeLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-            != null
-        || cppConfiguration.getFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-            != null
-        || cppConfiguration.getFdoPathUnsafeSinceItCanReturnValueFromWrongConfiguration() != null;
+    return cppConfiguration.getFdoOptimizeLabel() != null
+        || cppConfiguration.getFdoProfileLabel() != null
+        || cppConfiguration.getFdoPath() != null;
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index 1b7b363..938ea7f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -620,28 +620,14 @@
 
   @Nullable
   String getFdoInstrument() {
-    if (isToolConfigurationDoNotUseWillBeRemovedFor129045294()) {
-      // We don't want FDO in the host configuration
-      return null;
-    }
     return cppOptions.fdoInstrumentForBuild;
   }
 
-  /**
-   * @deprecated Unsafe because it returns a value from target configuration even in the host
-   *     configuration.
-   */
-  @Deprecated
-  PathFragment getFdoPathUnsafeSinceItCanReturnValueFromWrongConfiguration() {
+  PathFragment getFdoPath() {
     return fdoPath;
   }
 
-  /**
-   * @deprecated Unsafe because it returns a value from target configuration even in the host
-   *     configuration.
-   */
-  @Deprecated
-  Label getFdoOptimizeLabelUnsafeSinceItCanReturnValueFromWrongConfiguration() {
+  Label getFdoOptimizeLabel() {
     return fdoOptimizeLabel;
   }
 
@@ -663,28 +649,10 @@
 
   @Nullable
   Label getFdoPrefetchHintsLabel() {
-    if (isToolConfigurationDoNotUseWillBeRemovedFor129045294()) {
-      // We don't want FDO in the host configuration
-      return null;
-    }
-    return getFdoPrefetchHintsLabelUnsafeSinceItCanReturnValueFromWrongConfiguration();
-  }
-
-  /**
-   * @deprecated Unsafe because it returns a value from target configuration even in the host
-   *     configuration.
-   */
-  @Deprecated
-  Label getFdoPrefetchHintsLabelUnsafeSinceItCanReturnValueFromWrongConfiguration() {
     return cppOptions.getFdoPrefetchHintsLabel();
   }
 
-  /**
-   * @deprecated Unsafe because it returns a value from target configuration even in the host
-   *     configuration.
-   */
-  @Deprecated
-  Label getFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration() {
+  Label getFdoProfileLabel() {
     return cppOptions.fdoProfileLabel;
   }
 
@@ -692,30 +660,16 @@
     return cppOptions.csFdoProfileLabel;
   }
 
-  public Label getPropellerOptimizeLabel() {
-    return cppOptions.propellerOptimizeLabel;
-  }
-
-  /**
-   * @deprecated Unsafe because it returns a value from target configuration even in the host
-   *     configuration.
-   */
   @Nullable
-  @Deprecated
-  Label getPropellerOptimizeLabelUnsafeSinceItCanReturnValueFromWrongConfiguration() {
+  Label getPropellerOptimizeLabel() {
     if (cppOptions.fdoInstrumentForBuild != null || cppOptions.csFdoInstrumentForBuild != null) {
       return null;
     }
     return cppOptions.getPropellerOptimizeLabel();
   }
 
-  /**
-   * @deprecated Unsafe because it returns a value from target configuration even in the host
-   *     configuration.
-   */
   @Nullable
-  @Deprecated
-  Label getXFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration() {
+  Label getXFdoProfileLabel() {
     if (cppOptions.fdoOptimizeForBuild != null
         || cppOptions.fdoInstrumentForBuild != null
         || cppOptions.fdoProfileLabel != null
@@ -770,7 +724,7 @@
    */
   @Nullable
   public Label getTargetLibcTopLabel() {
-    if (!isToolConfigurationDoNotUseWillBeRemovedFor129045294()) {
+    if (!isToolConfigurationDoNotUseWillBeRemovedFor129045294) {
       // This isn't for a platform-enabled C++ toolchain (legacy C++ toolchains evaluate in the
       // target configuration while platform-enabled toolchains evaluate in the host/exec
       // configuration). targetLibcTopLabel is only intended for platform-enabled toolchains and can
@@ -807,13 +761,6 @@
     return collectCodeCoverage;
   }
 
-  /** @deprecated this is only a temporary workaround, will be removed by b/129045294. */
-  // TODO(b/129045294): Remove at first opportunity
-  @Deprecated
-  boolean isToolConfigurationDoNotUseWillBeRemovedFor129045294() {
-    return isToolConfigurationDoNotUseWillBeRemovedFor129045294;
-  }
-
   public boolean enableCcToolchainResolution() {
     return cppOptions.enableCcToolchainResolution;
   }
@@ -842,6 +789,7 @@
     return cppOptions.validateTopLevelHeaderInclusions;
   }
 
+  @Override
   public boolean appleGenerateDsym() {
     return appleGenerateDsym;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 2be96b1..e5b3488 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -1209,13 +1209,8 @@
 
     host.useStartEndLib = useStartEndLib;
     host.stripBinaries = StripMode.ALWAYS;
-    host.fdoOptimizeForBuild = fdoOptimizeForBuild;
-    host.fdoProfileLabel = fdoProfileLabel;
-    host.csFdoProfileLabel = csFdoProfileLabel;
-    host.xfdoProfileLabel = xfdoProfileLabel;
     host.inmemoryDotdFiles = inmemoryDotdFiles;
 
-    host.enableFdoProfileAbsolutePath = enableFdoProfileAbsolutePath;
     host.disableExpandIfAllAvailableInFlagSet = disableExpandIfAllAvailableInFlagSet;
     host.disableLegacyCcProvider = disableLegacyCcProvider;
     host.removeCpuCompilerCcToolchainAttributes = removeCpuCompilerCcToolchainAttributes;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoContext.java
index f2ad038..62735cf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoContext.java
@@ -148,10 +148,6 @@
   }
 
   boolean hasArtifacts(CppConfiguration cppConfiguration) {
-    if (cppConfiguration.isToolConfigurationDoNotUseWillBeRemovedFor129045294()) {
-      // We don't want FDO for host configuration
-      return false;
-    }
     return getBranchFdoProfile() != null
         || getPrefetchHintsArtifact() != null
         || getPropellerOptimizeInputFile() != null;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java
index 19dbc04..df61601 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java
@@ -53,9 +53,7 @@
     Artifact protoProfileArtifact = null;
     Pair<FdoInputFile, Artifact> fdoInputs = null;
     if (configuration.getCompilationMode() == CompilationMode.OPT) {
-      if (cppConfiguration
-              .getFdoPrefetchHintsLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-          != null) {
+      if (cppConfiguration.getFdoPrefetchHintsLabel() != null) {
         FdoPrefetchHintsProvider provider = attributes.getFdoPrefetch();
         prefetchHints = provider.getInputFile();
       }
@@ -77,16 +75,13 @@
         if (ccArtifact != null || ldArtifact != null) {
           propellerOptimizeInputFile = new PropellerOptimizeInputFile(ccArtifact, ldArtifact);
         }
-      } else if (cppConfiguration
-              .getPropellerOptimizeLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-          != null) {
+      } else if (cppConfiguration.getPropellerOptimizeLabel() != null) {
         PropellerOptimizeProvider provider = attributes.getPropellerOptimize();
         propellerOptimizeInputFile = provider.getInputFile();
       }
 
-      if (cppConfiguration.getFdoPathUnsafeSinceItCanReturnValueFromWrongConfiguration() != null) {
-        PathFragment fdoZip =
-            cppConfiguration.getFdoPathUnsafeSinceItCanReturnValueFromWrongConfiguration();
+      if (cppConfiguration.getFdoPath() != null) {
+        PathFragment fdoZip = cppConfiguration.getFdoPath();
         SkyKey fdoKey = CcSkyframeFdoSupportValue.key(fdoZip);
         SkyFunction.Environment skyframeEnv = ruleContext.getAnalysisEnvironment().getSkyframeEnv();
         CcSkyframeFdoSupportValue ccSkyframeFdoSupportValue =
@@ -99,22 +94,16 @@
         Preconditions.checkState(fdoInputFile == null);
         fdoInputFile =
             FdoInputFile.fromAbsolutePath(ccSkyframeFdoSupportValue.getFdoZipPath().asFragment());
-      } else if (cppConfiguration
-              .getFdoOptimizeLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-          != null) {
+      } else if (cppConfiguration.getFdoOptimizeLabel() != null) {
         FdoProfileProvider fdoProfileProvider = attributes.getFdoOptimizeProvider();
         if (fdoProfileProvider != null) {
           fdoInputs = getFdoInputs(ruleContext, fdoProfileProvider);
         } else {
           fdoInputFile = fdoInputFileFromArtifacts(ruleContext, attributes);
         }
-      } else if (cppConfiguration
-              .getFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-          != null) {
+      } else if (cppConfiguration.getFdoProfileLabel() != null) {
         fdoInputs = getFdoInputs(ruleContext, attributes.getFdoProfileProvider());
-      } else if (cppConfiguration
-              .getXFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-          != null) {
+      } else if (cppConfiguration.getXFdoProfileLabel() != null) {
         fdoInputs = getFdoInputs(ruleContext, attributes.getXFdoProfileProvider());
       }
 
@@ -173,8 +162,7 @@
       }
       if ((branchFdoMode != BranchFdoMode.XBINARY_FDO)
           && (branchFdoMode != BranchFdoMode.AUTO_FDO)
-          && cppConfiguration.getXFdoProfileLabelUnsafeSinceItCanReturnValueFromWrongConfiguration()
-              != null) {
+          && cppConfiguration.getXFdoProfileLabel() != null) {
         ruleContext.throwWithRuleError("--xbinary_fdo only accepts *.xfdo and *.afdo");
       }
 
@@ -185,8 +173,7 @@
       Artifact profileArtifact = null;
       if (branchFdoMode == BranchFdoMode.LLVM_FDO) {
         profileArtifact =
-            convertLLVMRawProfileToIndexed(
-                attributes, fdoInputFile, toolPaths, ruleContext, cppConfiguration, "fdo");
+            convertLLVMRawProfileToIndexed(attributes, fdoInputFile, toolPaths, ruleContext, "fdo");
         if (ruleContext.hasErrors()) {
           return null;
         }
@@ -202,14 +189,13 @@
             "Symlinking FDO profile " + fdoInputFile.getBasename());
       } else if (branchFdoMode == BranchFdoMode.LLVM_CS_FDO) {
         Artifact nonCSProfileArtifact =
-            convertLLVMRawProfileToIndexed(
-                attributes, fdoInputFile, toolPaths, ruleContext, cppConfiguration, "fdo");
+            convertLLVMRawProfileToIndexed(attributes, fdoInputFile, toolPaths, ruleContext, "fdo");
         if (ruleContext.hasErrors()) {
           return null;
         }
         Artifact csProfileArtifact =
             convertLLVMRawProfileToIndexed(
-                attributes, csFdoInputFile, toolPaths, ruleContext, cppConfiguration, "csfdo");
+                attributes, csFdoInputFile, toolPaths, ruleContext, "csfdo");
         if (ruleContext.hasErrors()) {
           return null;
         }
@@ -342,12 +328,7 @@
       FdoInputFile fdoProfile,
       ImmutableMap<String, PathFragment> toolPaths,
       RuleContext ruleContext,
-      CppConfiguration cppConfiguration,
       String fdoUniqueArtifactName) {
-    if (cppConfiguration.isToolConfigurationDoNotUseWillBeRemovedFor129045294()) {
-      return null;
-    }
-
     Artifact profileArtifact =
         ruleContext.getUniqueDirectoryArtifact(
             fdoUniqueArtifactName,