[NewOffloadModel] Add additional options for clang-sycl-linker#21692
[NewOffloadModel] Add additional options for clang-sycl-linker#21692YixingZhang007 wants to merge 8 commits intointel:syclfrom
Conversation
4915195 to
81ce781
Compare
| if (A->getOption().matches(options::OPT_Xlinker)) { | ||
| CmdArgs.push_back(A->getValue()); | ||
| } | ||
| } |
There was a problem hiding this comment.
Why is this needed? I'm seeing values of -Xlinker already being passed as expected.
clang++ --sycl-link --target=spirv64 -### a.o -Xlinker -blah
Intel SYCL compiler development build based on:
clang version 23.0.0git (https://github.com/mdtoguchi/llvm accf054)
Target: spirv64
Thread model: posix
InstalledDir: /localdisk2/mtoguchi/github/llvm/build/bin
Build config: +assertions
"clang-sycl-linker" "a.o" "-blah" "-o" "a.out"
| }; | ||
| for (auto [Opt, Flag] : SimpleFlags) | ||
| if (Args.hasArg(Opt)) | ||
| XLinker(Flag); |
There was a problem hiding this comment.
It looks like we have a bit of duplication of option names, etc, which would lead to a maintenance issue with any option name changes or even capturing new flags that need to be forwarded.
Leveraging the Args information would be beneficial here. A new 'Group' can be added for any of these options that need to be forwarded to the clang-sycl-linker. From there, check if an Arg is part of the group and then forward with render()
for (Arg *A : Args.filtered(options::OPT_sycl_Group))
A->render(Args, CmdArgs);
elizabethandrews
left a comment
There was a problem hiding this comment.
I am not familiar with this and defer to @mdtoguchi for review and approval.
This patch is part of the ongoing effort to migrate to clang-sycl-linker. It adds the support for new options required for clang-sycl-linker, where they will be used during the linking and backend compilation stages.
Specifically, the following changes are made:
clang-sycl-linkerare defined inSYCLLinkOpts.td.ClangLinkerWrapper.cpp,appendClangSYCLLinkerArgsis introduced to forward the required flags toclang-sycl-linkervia-XlinkerwhenUseClangSYCLLinkeris enabled.UseClangSYCLLinkeris a temporary guard that will be removed onceclang-sycl-linker` is fully supported.-Xlinkerarguments toclang-sycl-linkerinSPIRV.cpp.