C++: Remove CppDebugFileProvider from CompilationInfo

RELNOTES:none
PiperOrigin-RevId: 232431924
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index 8b0fe11..f488325 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -202,22 +202,15 @@
   // this class with {@code CcCompilationOutputs}.
   public static final class CompilationInfo implements CompilationInfoApi {
     private final CcCompilationContext ccCompilationContext;
-    private final CppDebugFileProvider cppDebugFileProvider;
     private final CcCompilationOutputs compilationOutputs;
 
     private CompilationInfo(
         CcCompilationContext ccCompilationContext,
-        CppDebugFileProvider cppDebugFileProvider,
         CcCompilationOutputs compilationOutputs) {
       this.ccCompilationContext = ccCompilationContext;
-      this.cppDebugFileProvider = cppDebugFileProvider;
       this.compilationOutputs = compilationOutputs;
     }
 
-    public CppDebugFileProvider getCppDebugFileProvider() {
-      return cppDebugFileProvider;
-    }
-
     @Override
     public CcCompilationOutputs getCcCompilationOutputs() {
       return compilationOutputs;
@@ -747,18 +740,7 @@
     // Create compile actions (both PIC and no-PIC).
     CcCompilationOutputs ccOutputs = createCcCompileActions();
 
-    DwoArtifactsCollector dwoArtifacts =
-        DwoArtifactsCollector.transitiveCollector(
-            ccOutputs,
-            deps,
-            /*generateDwo=*/ false,
-            /*ltoBackendArtifactsUsePic=*/ false,
-            /*ltoBackendArtifacts=*/ ImmutableList.of());
-
-    CppDebugFileProvider cppDebugFileProvider =
-        new CppDebugFileProvider(dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts());
-
-    return new CompilationInfo(ccCompilationContext, cppDebugFileProvider, ccOutputs);
+    return new CompilationInfo(ccCompilationContext, ccOutputs);
   }
 
   public static Map<String, NestedSet<Artifact>> buildOutputGroups(
@@ -768,6 +750,20 @@
     return outputGroups;
   }
 
+  public static CppDebugFileProvider buildCppDebugFileProvider(
+      CcCompilationOutputs ccCompilationOutputs, Iterable<TransitiveInfoCollection> deps) {
+    DwoArtifactsCollector dwoArtifacts =
+        DwoArtifactsCollector.transitiveCollector(
+            ccCompilationOutputs,
+            deps,
+            /*generateDwo=*/ false,
+            /*ltoBackendArtifactsUsePic=*/ false,
+            /*ltoBackendArtifacts=*/ ImmutableList.of());
+    CppDebugFileProvider cppDebugFileProvider =
+        new CppDebugFileProvider(dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts());
+    return cppDebugFileProvider;
+  }
+
   public static Map<String, NestedSet<Artifact>> buildOutputGroupsForEmittingCompileProviders(
       CcCompilationOutputs ccCompilationOutputs,
       CcCompilationContext ccCompilationContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
index 0313bb5..e48999a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
@@ -15,6 +15,7 @@
 package com.google.devtools.build.lib.rules.cpp;
 
 import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -167,11 +168,14 @@
             .setHeadersCheckingMode(HeadersCheckingMode.STRICT)
             .compile();
 
+    CppDebugFileProvider cppDebugFileProvider =
+        CcCompilationHelper.buildCppDebugFileProvider(
+            compilationInfo.getCcCompilationOutputs(), ImmutableList.of());
     Map<String, NestedSet<Artifact>> outputGroups =
         CcCompilationHelper.buildOutputGroups(compilationInfo.getCcCompilationOutputs());
     RuleConfiguredTargetBuilder result =
         new RuleConfiguredTargetBuilder(ruleContext)
-            .addProvider(compilationInfo.getCppDebugFileProvider())
+            .addProvider(cppDebugFileProvider)
             .addNativeDeclaredProvider(
                 CcInfo.builder()
                     .setCcCompilationContext(compilationInfo.getCcCompilationContext())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index b6bc9da..46433f7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -31,6 +31,7 @@
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.Runfiles;
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
+import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
@@ -454,6 +455,11 @@
                 LibraryToLinkWrapper.getDynamicLibrariesForRuntime(
                     /* linkingStatically= */ false, libraryToLinkWrappers));
 
+    @SuppressWarnings("unchecked")
+    CppDebugFileProvider cppDebugFileProvider =
+        CcCompilationHelper.buildCppDebugFileProvider(
+            compilationInfo.getCcCompilationOutputs(),
+            (List<TransitiveInfoCollection>) ruleContext.getPrerequisites("deps", Mode.TARGET));
     Map<String, NestedSet<Artifact>> currentOutputGroups =
         CcCompilationHelper.buildOutputGroupsForEmittingCompileProviders(
             compilationInfo.getCcCompilationOutputs(),
@@ -465,7 +471,7 @@
     CcSkylarkApiProvider.maybeAdd(ruleContext, targetBuilder);
     targetBuilder
         .setFilesToBuild(filesToBuild)
-        .addProvider(compilationInfo.getCppDebugFileProvider())
+        .addProvider(cppDebugFileProvider)
         .addProvider(ccNativeLibraryProvider)
         .addNativeDeclaredProvider(
             CcInfo.builder()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
index 7f41226..b9a532c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -53,6 +53,7 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
+import com.google.devtools.build.lib.rules.cpp.CppDebugFileProvider;
 import com.google.devtools.build.lib.rules.cpp.CppHelper;
 import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
 import com.google.devtools.build.lib.rules.cpp.CppSemantics;
@@ -153,7 +154,16 @@
       FeatureConfiguration featureConfiguration = getFeatureConfiguration();
       ProtoConfiguration protoConfiguration = ruleContext.getFragment(ProtoConfiguration.class);
 
-      CcCompilationHelper compilationHelper = initializeCompilationHelper(featureConfiguration);
+      ImmutableList.Builder<TransitiveInfoCollection> depsBuilder = ImmutableList.builder();
+      TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
+      if (runtime != null) {
+        depsBuilder.add(runtime);
+      }
+      depsBuilder.addAll(ruleContext.getPrerequisites("deps", TARGET));
+      ImmutableList<TransitiveInfoCollection> deps = depsBuilder.build();
+
+      CcCompilationHelper compilationHelper =
+          initializeCompilationHelper(featureConfiguration, deps);
 
       // Compute and register files generated by this proto library.
       Collection<Artifact> outputs = new ArrayList<>();
@@ -196,22 +206,14 @@
 
       CompilationInfo compilationInfo = compilationHelper.compile();
       CcCompilationOutputs ccCompilationOutputs = compilationInfo.getCcCompilationOutputs();
-      ImmutableList.Builder<TransitiveInfoCollection> depsBuilder =
-          ImmutableList.<TransitiveInfoCollection>builder();
-      TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
-      if (runtime != null) {
-        depsBuilder.add(runtime);
-      }
-      depsBuilder.addAll(ruleContext.getPrerequisites("deps", TARGET));
-      ImmutableList<TransitiveInfoCollection> deps = depsBuilder.build();
       CcLinkingHelper ccLinkingHelper = initializeLinkingHelper(featureConfiguration, deps);
       if (ccToolchain(ruleContext).supportsInterfaceSharedLibraries(featureConfiguration)) {
         ccLinkingHelper.emitInterfaceSharedLibraries(true);
       }
-      CcLinkingOutputs ccLinkingOutputs = CcLinkingOutputs.EMPTY;
+
       ImmutableList<LibraryToLinkWrapper> libraryToLinkWrapper = ImmutableList.of();
       if (!ccCompilationOutputs.isEmpty()) {
-        ccLinkingOutputs = ccLinkingHelper.link(ccCompilationOutputs);
+        CcLinkingOutputs ccLinkingOutputs = ccLinkingHelper.link(ccCompilationOutputs);
         if (!ccLinkingOutputs.isEmpty()) {
           libraryToLinkWrapper = ImmutableList.of(ccLinkingOutputs.getLibraryToLink());
         }
@@ -222,9 +224,12 @@
           ccLinkingHelper.buildCcLinkingContextFromLibraryToLinkWrappers(
               libraryToLinkWrapper, compilationInfo.getCcCompilationContext());
 
+      CppDebugFileProvider cppDebugFileProvider =
+          CcCompilationHelper.buildCppDebugFileProvider(
+              compilationInfo.getCcCompilationOutputs(), deps);
       ccLibraryProviders =
           new TransitiveInfoProviderMapBuilder()
-              .add(compilationInfo.getCppDebugFileProvider())
+              .add(cppDebugFileProvider)
               .put(
                   CcInfo.builder()
                       .setCcCompilationContext(compilationInfo.getCcCompilationContext())
@@ -288,7 +293,7 @@
     }
 
     private CcCompilationHelper initializeCompilationHelper(
-        FeatureConfiguration featureConfiguration) {
+        FeatureConfiguration featureConfiguration, List<TransitiveInfoCollection> deps) {
       CcToolchainProvider toolchain = ccToolchain(ruleContext);
       CcCompilationHelper helper =
           new CcCompilationHelper(
@@ -297,13 +302,7 @@
               featureConfiguration,
               toolchain,
               toolchain.getFdoContext());
-      TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
-      if (runtime != null) {
-        helper.addDeps(ImmutableList.of(runtime));
-      }
-
-      helper.addDeps(ruleContext.getPrerequisites("deps", TARGET));
-
+      helper.addDeps(deps);
       // Don't instrument the generated C++ files even when --collect_code_coverage is set.
       helper.setAllowCoverageInstrumentation(false);
       return helper;