[clang] 5cc7259 - [clang-sycl-linker][NFC] Improve clang-sycl-linker verbose output (#196212)
via cfe-commits
cfe-commits at lists.llvm.org
Wed May 6 18:14:02 PDT 2026
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();
}
More information about the cfe-commits
mailing list