diff options
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java | 3 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java | 16 |
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<>(); |