diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java | 60 |
1 files changed, 41 insertions, 19 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java index 6c714c560a..a968ccbd8d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java @@ -61,22 +61,19 @@ public final class LtoBackendArtifacts { // The result of executing the above command line, an ELF object file. private final Artifact objectFile; - // A map of all of the bitcode files. This is the universe from which the .imports file - // distills its lists. The map is the same across all LtoBackendArtifacts of a given - // binary. - private final Map<PathFragment, Artifact> bitcodeFiles; - - // Command line arguments to apply to back-end compile action, typically from - // the feature configuration and user-provided linkopts. - private List<String> commandLine; - LtoBackendArtifacts( PathFragment ltoOutputRootPrefix, Artifact bitcodeFile, Map<PathFragment, Artifact> allBitCodeFiles, RuleContext ruleContext, BuildConfiguration configuration, - CppLinkAction.LinkArtifactFactory linkArtifactFactory) { + CppLinkAction.LinkArtifactFactory linkArtifactFactory, + FeatureConfiguration featureConfiguration, + CcToolchainProvider ccToolchain, + FdoSupportProvider fdoSupport, + boolean usePic, + boolean generateDwo, + List<String> commandLine) { this.bitcodeFile = bitcodeFile; PathFragment obj = ltoOutputRootPrefix.getRelative(bitcodeFile.getRootRelativePath()); @@ -86,7 +83,17 @@ public final class LtoBackendArtifacts { index = linkArtifactFactory.create( ruleContext, configuration, FileSystemUtils.appendExtension(obj, ".thinlto.bc")); - bitcodeFiles = allBitCodeFiles; + scheduleLtoBackendAction( + ruleContext, + featureConfiguration, + ccToolchain, + fdoSupport, + usePic, + generateDwo, + configuration, + linkArtifactFactory, + commandLine, + allBitCodeFiles); } // Interface to create an LTO backend that does not perform any cross-module optimization. @@ -95,14 +102,31 @@ public final class LtoBackendArtifacts { Artifact bitcodeFile, RuleContext ruleContext, BuildConfiguration configuration, - CppLinkAction.LinkArtifactFactory linkArtifactFactory) { + CppLinkAction.LinkArtifactFactory linkArtifactFactory, + FeatureConfiguration featureConfiguration, + CcToolchainProvider ccToolchain, + FdoSupportProvider fdoSupport, + boolean usePic, + boolean generateDwo, + List<String> commandLine) { this.bitcodeFile = bitcodeFile; PathFragment obj = ltoOutputRootPrefix.getRelative(bitcodeFile.getRootRelativePath()); objectFile = linkArtifactFactory.create(ruleContext, configuration, obj); imports = null; index = null; - bitcodeFiles = null; + + scheduleLtoBackendAction( + ruleContext, + featureConfiguration, + ccToolchain, + fdoSupport, + usePic, + generateDwo, + configuration, + linkArtifactFactory, + commandLine, + null); } public Artifact getObjectFile() { @@ -118,11 +142,7 @@ public final class LtoBackendArtifacts { builder.add(index); } - public void setCommandLine(List<String> cmdLine) { - commandLine = cmdLine; - } - - public void scheduleLtoBackendAction( + private void scheduleLtoBackendAction( RuleContext ruleContext, FeatureConfiguration featureConfiguration, CcToolchainProvider ccToolchain, @@ -130,7 +150,9 @@ public final class LtoBackendArtifacts { boolean usePic, boolean generateDwo, BuildConfiguration configuration, - CppLinkAction.LinkArtifactFactory linkArtifactFactory) { + CppLinkAction.LinkArtifactFactory linkArtifactFactory, + List<String> commandLine, + Map<PathFragment, Artifact> bitcodeFiles) { LtoBackendAction.Builder builder = new LtoBackendAction.Builder(); builder.addInput(bitcodeFile); |