aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
diff options
context:
space:
mode:
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.java60
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);