llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Alexey Bader (bader) <details> <summary>Changes</summary> - --version now returns EXIT_SUCCESS immediately after printing; previously it fell through into the rest of main. - Report an error early when no input files are provided rather than hitting the assert inside linkDeviceCode. --- Full diff: https://github.com/llvm/llvm-project/pull/200096.diff 2 Files Affected: - (added) clang/test/OffloadTools/clang-sycl-linker/options.ll (+40) - (modified) clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp (+6-1) ``````````diff diff --git a/clang/test/OffloadTools/clang-sycl-linker/options.ll b/clang/test/OffloadTools/clang-sycl-linker/options.ll new file mode 100644 index 0000000000000..55b691187028f --- /dev/null +++ b/clang/test/OffloadTools/clang-sycl-linker/options.ll @@ -0,0 +1,40 @@ +; Tests non-functional command line options of the clang-sycl-linker tool. +; +; REQUIRES: spirv-registered-target +; +; Test --help +; RUN: clang-sycl-linker --help | FileCheck %s --check-prefix=HELP +; HELP: OVERVIEW: A utility that wraps around several steps required to link SYCL device files. +; HELP: USAGE: clang-sycl-linker +; HELP: OPTIONS: +; +; Test --version +; RUN: clang-sycl-linker --version | FileCheck %s --check-prefix=VERSION +; VERSION: clang-sycl-linker version +; +; Test missing input files +; RUN: not clang-sycl-linker --dry-run -triple=spirv64 -o %t.out 2>&1 | FileCheck %s --check-prefix=NO-INPUT +; NO-INPUT: No input files provided +; +; Create a simple bitcode file for subsequent tests +; RUN: llvm-as %s -o %t.bc +; +; Test --print-linked-module +; RUN: clang-sycl-linker --dry-run -triple=spirv64 %t.bc --print-linked-module -o %t.out > %t.ll +; RUN: FileCheck %s --check-prefix=PRINT-LINKED < %t.ll +; PRINT-LINKED: target triple = "spirv64" +; +; Test --save-temps +; RUN: rm -rf %t.dir && mkdir -p %t.dir +; RUN: cd %t.dir && clang-sycl-linker --dry-run -triple=spirv64 %t.bc --save-temps -o out.spv +; RUN: ls %t.dir/out.spv-*.bc | count 1 +; +; Test --spirv-dump-device-code (should parse without error) +; RUN: clang-sycl-linker --dry-run -triple=spirv64 %t.bc --spirv-dump-device-code=%t.dir -o %t.out +; +; Test --spirv-dump-device-code with no value (fallback to ./) +; RUN: clang-sycl-linker --dry-run -triple=spirv64 %t.bc --spirv-dump-device-code= -o %t.out + +target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1" +target triple = "spirv64" + diff --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp index 88a09d0a3ecc7..0d83c93065e3f 100644 --- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp +++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp @@ -786,8 +786,10 @@ int main(int argc, char **argv) { return EXIT_SUCCESS; } - if (Args.hasArg(OPT_version)) + if (Args.hasArg(OPT_version)) { printVersion(outs()); + return EXIT_SUCCESS; + } Verbose = Args.hasArg(OPT_verbose); DryRun = Args.hasArg(OPT_dry_run); @@ -812,6 +814,9 @@ int main(int argc, char **argv) { if (!FilesOrErr) reportError(FilesOrErr.takeError()); + if (FilesOrErr->empty()) + reportError(createStringError("No input files provided")); + // Run SYCL linking process on the generated inputs. if (Error Err = runSYCLLink(*FilesOrErr, Args)) reportError(std::move(Err)); `````````` </details> https://github.com/llvm/llvm-project/pull/200096 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
