Author: Alexey Bader
Date: 2026-05-06T18:13:57-07:00
New Revision: 5cc7259bf2d334b6d173d22c68d2d43fa5906a41

URL: 
https://github.com/llvm/llvm-project/commit/5cc7259bf2d334b6d173d22c68d2d43fa5906a41
DIFF: 
https://github.com/llvm/llvm-project/commit/5cc7259bf2d334b6d173d22c68d2d43fa5906a41.diff

LOG: [clang-sycl-linker][NFC] Improve clang-sycl-linker verbose output (#196212)

Print in-process operation messages (sycl-device-link, LLVM backend)
before execution rather than after, matching the behavior of
clang-linker-wrapper.

Added: 
    

Modified: 
    clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp

Removed: 
    


################################################################################
diff  --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp 
b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
index a2380ea19f5d6..5a525d263427d 100644
--- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
+++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
@@ -261,9 +261,29 @@ Expected<LinkResult> linkDeviceCode(ArrayRef<std::string> 
InputFiles,
 
   assert(InputFiles.size() && "No inputs to link");
 
+  // Get all SYCL device library files, if any.
+  auto SYCLDeviceLibFiles = getSYCLDeviceLibs(Args);
+  if (!SYCLDeviceLibFiles)
+    return SYCLDeviceLibFiles.takeError();
+
+  // Create a new file to write the linked device file to.
+  auto BitcodeOutput =
+      createTempFile(Args, sys::path::filename(OutputFile), "bc");
+  if (!BitcodeOutput)
+    return BitcodeOutput.takeError();
+
+  if (Verbose || DryRun) {
+    std::string Inputs = llvm::join(InputFiles.begin(), InputFiles.end(), ", 
");
+    std::string LibInputs = llvm::join((*SYCLDeviceLibFiles).begin(),
+                                       (*SYCLDeviceLibFiles).end(), ", ");
+    errs() << formatv(
+        "sycl-device-link: inputs: {0} libfiles: {1} output: {2}\n", Inputs,
+        LibInputs, *BitcodeOutput);
+  }
+
+  // Link SYCL device input files.
   auto LinkerOutput = std::make_unique<Module>("sycl-device-link", C);
   Linker L(*LinkerOutput);
-  // Link SYCL device input files.
   for (auto &File : InputFiles) {
     auto ModOrErr = getBitcodeModule(File, C);
     if (!ModOrErr)
@@ -272,11 +292,6 @@ Expected<LinkResult> linkDeviceCode(ArrayRef<std::string> 
InputFiles,
       return createStringError("Could not link IR");
   }
 
-  // Get all SYCL device library files, if any.
-  auto SYCLDeviceLibFiles = getSYCLDeviceLibs(Args);
-  if (!SYCLDeviceLibFiles)
-    return SYCLDeviceLibFiles.takeError();
-
   // Link in SYCL device library files.
   const llvm::Triple Triple(Args.getLastArgValue(OPT_triple_EQ));
   for (auto &File : *SYCLDeviceLibFiles) {
@@ -294,12 +309,6 @@ Expected<LinkResult> linkDeviceCode(ArrayRef<std::string> 
InputFiles,
   if (Args.hasArg(OPT_print_linked_module))
     outs() << *LinkerOutput;
 
-  // Create a new file to write the linked device file to.
-  auto BitcodeOutput =
-      createTempFile(Args, sys::path::filename(OutputFile), "bc");
-  if (!BitcodeOutput)
-    return BitcodeOutput.takeError();
-
   // Write the final output into 'BitcodeOutput' file.
   int FD = -1;
   if (std::error_code EC = sys::fs::openFileForWrite(*BitcodeOutput, FD))
@@ -307,15 +316,6 @@ Expected<LinkResult> linkDeviceCode(ArrayRef<std::string> 
InputFiles,
   llvm::raw_fd_ostream OS(FD, true);
   WriteBitcodeToFile(*LinkerOutput, OS);
 
-  if (Verbose) {
-    std::string Inputs = llvm::join(InputFiles.begin(), InputFiles.end(), ", 
");
-    std::string LibInputs = llvm::join((*SYCLDeviceLibFiles).begin(),
-                                       (*SYCLDeviceLibFiles).end(), ", ");
-    errs() << formatv(
-        "sycl-device-link: inputs: {0} libfiles: {1} output: {2}\n", Inputs,
-        LibInputs, *BitcodeOutput);
-  }
-
   return LinkResult{std::move(LinkerOutput), SmallString<256>(*BitcodeOutput)};
 }
 
@@ -329,6 +329,10 @@ static Error runCodeGen(StringRef File, const ArgList 
&Args,
                         StringRef OutputFile, LLVMContext &C) {
   llvm::TimeTraceScope TimeScope("Code generation");
 
+  if (Verbose || DryRun)
+    errs() << formatv("LLVM backend: input: {0}, output: {1}\n", File,
+                      OutputFile);
+
   // Parse input module.
   SMDiagnostic Err;
   std::unique_ptr<Module> M = parseIRFile(File, Err, C);
@@ -375,10 +379,6 @@ static Error runCodeGen(StringRef File, const ArgList 
&Args,
     return createStringError("Failed to execute LLVM backend");
   CodeGenPasses.run(*M);
 
-  if (Verbose)
-    errs() << formatv("LLVM backend: input: {0}, output: {1}\n", File,
-                      OutputFile);
-
   return Error::success();
 }
 


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to