[clang] [clang][modules-driver] Extract logic to feed jobs back into Compilation (NFC) (PR #191441)

Naveen Seth Hanig via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 10 08:13:39 PDT 2026


https://github.com/naveen-seth updated https://github.com/llvm/llvm-project/pull/191441

>From cf5a918988a88cfadc78664a0b382c6deaba9cd3 Mon Sep 17 00:00:00 2001
From: Naveen Seth Hanig <naveen.hanig at outlook.com>
Date: Fri, 10 Apr 2026 17:09:58 +0200
Subject: [PATCH] [clang][modules-driver] Extract logic to feed jobs back into
 Compilation (NFC)

---
 clang/lib/Driver/ModulesDriver.cpp | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/clang/lib/Driver/ModulesDriver.cpp b/clang/lib/Driver/ModulesDriver.cpp
index 783f2270c4e0f..7ccad81f02571 100644
--- a/clang/lib/Driver/ModulesDriver.cpp
+++ b/clang/lib/Driver/ModulesDriver.cpp
@@ -1496,6 +1496,19 @@ static void createAndConnectRoot(CompilationGraph &Graph) {
   }
 }
 
+/// Moves jobs from \p Graph into \p C in the graph's topological order.
+static void feedJobsBackIntoCompilation(Compilation &C,
+                                        CompilationGraph &&Graph) {
+  llvm::ReversePostOrderTraversal<CompilationGraph *> TopologicallySortedNodes(
+      &Graph);
+  assert(isa<RootNode>(*TopologicallySortedNodes.begin()) &&
+         "First node in topological order must be the root!");
+  auto TopologicallySortedJobNodes = llvm::map_range(
+      llvm::drop_begin(TopologicallySortedNodes), llvm::CastTo<JobNode>);
+  for (auto *JN : TopologicallySortedJobNodes)
+    C.addCommand(std::move(JN->Job));
+}
+
 void driver::modules::runModulesDriver(
     Compilation &C, ArrayRef<StdModuleManifest::Module> ManifestEntries) {
   llvm::PrettyStackTraceString CrashInfo("Running modules driver.");
@@ -1554,12 +1567,5 @@ void driver::modules::runModulesDriver(
 
   // TODO: Fix-up command-lines for named module imports.
 
-  llvm::ReversePostOrderTraversal<CompilationGraph *> TopologicallySortedNodes(
-      &Graph);
-  assert(isa<RootNode>(*TopologicallySortedNodes.begin()) &&
-         "First node in topological order must be the root!");
-  auto TopologicallySortedJobNodes = llvm::map_range(
-      llvm::drop_begin(TopologicallySortedNodes), llvm::CastTo<JobNode>);
-  for (auto *JN : TopologicallySortedJobNodes)
-    C.addCommand(std::move(JN->Job));
+  feedJobsBackIntoCompilation(C, std::move(Graph));
 }



More information about the cfe-commits mailing list