aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java16
2 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index c613ff0ec6..8c91d6be80 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -288,7 +288,8 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
Iterable<LtoBackendArtifacts> ltoBackendArtifacts = ImmutableList.of();
boolean usePic = CppHelper.usePic(ruleContext, !isLinkShared(ruleContext));
- if (featureConfiguration.isEnabled(CppRuleClasses.THIN_LTO)) {
+ if (linkActionBuilder.hasLtoBitcodeInputs()
+ && featureConfiguration.isEnabled(CppRuleClasses.THIN_LTO)) {
linkActionBuilder.setLtoIndexing(true);
linkActionBuilder.setUsePicForLtoBackendActions(usePic);
CppLinkAction indexAction = linkActionBuilder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index d2a03172d5..d4f3e4e515 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -498,6 +498,22 @@ public class CppLinkActionBuilder {
return uniqueLibrariesBuilder.build();
}
+ /**
+ * Returns true if there are any LTO bitcode inputs to this link, either directly transitively via
+ * library inputs.
+ */
+ boolean hasLtoBitcodeInputs() {
+ if (!ltoBitcodeFiles.isEmpty()) {
+ return true;
+ }
+ for (LibraryToLink lib : libraries.build()) {
+ if (!lib.getLtoBitcodeFiles().isEmpty()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private Iterable<LtoBackendArtifacts> createLtoArtifacts(
PathFragment ltoOutputRootPrefix, NestedSet<LibraryToLink> uniqueLibraries) {
Set<Artifact> compiled = new LinkedHashSet<>();