aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-02-20 02:31:10 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-20 02:32:40 -0800
commit993f1de4bfd4b562a0a378badd46b189833f966b (patch)
tree383bf3ec346ae04284a010ec134766c42eb167b5 /src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
parent49f805c028b225ecdfd3c05c1dbb4e09a09b9420 (diff)
Route fdo logic that deals with the path to the fdo profile through CcToolchainProvider
As --fdo_optimize can point to a label, the path to the fdo profile can not be reliably determined in CppConfiguration. In order to enable the fdo features (which depend on the path to the fdo profile), the logic from CppConfiguration.configurationEnabledFeatures() has been moved to CcCommon.configureFeatures(). The latter method has access to the fdo profile path through CcToolchainProvider. RELNOTES: None. PiperOrigin-RevId: 186278311
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
index 885f031fac..22ee5acfa6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
@@ -53,6 +53,7 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.Builder;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
import com.google.devtools.build.lib.rules.cpp.FdoSupport.FdoException;
+import com.google.devtools.build.lib.rules.cpp.FdoSupport.FdoMode;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.util.FileTypeSet;
@@ -371,12 +372,20 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
return null;
}
+ FdoMode fdoMode;
+ if (fdoZip == null) {
+ fdoMode = FdoMode.OFF;
+ } else if (CppFileTypes.GCC_AUTO_PROFILE.matches(fdoZip.getBaseName())) {
+ fdoMode = FdoMode.AUTO_FDO;
+ } else if (cppConfiguration.isLLVMOptimizedFdo(toolchainInfo.isLLVMCompiler())) {
+ fdoMode = FdoMode.LLVM_FDO;
+ } else {
+ fdoMode = FdoMode.VANILLA;
+ }
+
SkyKey fdoKey =
FdoSupportValue.key(
- cppConfiguration.getLipoMode(),
- fdoZip,
- cppConfiguration.getFdoInstrument(),
- cppConfiguration.isLLVMOptimizedFdo(toolchainInfo.isLLVMCompiler()));
+ cppConfiguration.getLipoMode(), fdoZip, cppConfiguration.getFdoInstrument(), fdoMode);
SkyFunction.Environment skyframeEnv = ruleContext.getAnalysisEnvironment().getSkyframeEnv();
FdoSupportValue fdoSupport;
@@ -562,7 +571,8 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
: null,
getEnvironment(ruleContext),
builtInIncludeDirectories,
- sysroot);
+ sysroot,
+ fdoMode);
TemplateVariableInfo templateVariableInfo =
createMakeVariableProvider(cppConfiguration, sysroot);