llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Alexey Bader (bader)

<details>
<summary>Changes</summary>

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

---
Full diff: https://github.com/llvm/llvm-project/pull/196212.diff


1 Files Affected:

- (modified) clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp (+25-25) 


``````````diff
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();
 }
 

``````````

</details>


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

Reply via email to