diff options
author | Googler <noreply@google.com> | 2018-02-20 02:31:10 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-20 02:32:40 -0800 |
commit | 993f1de4bfd4b562a0a378badd46b189833f966b (patch) | |
tree | 383bf3ec346ae04284a010ec134766c42eb167b5 /src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java | |
parent | 49f805c028b225ecdfd3c05c1dbb4e09a09b9420 (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.java | 20 |
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); |