[PATCH] D137470: [Offloading] Initial support for registering offloading entries on COFF targets

Joseph Huber via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 4 15:50:08 PDT 2022


jhuber6 created this revision.
jhuber6 added reviewers: tra, jdoerfert, tianshilei1992, JonChesterfield, yaxunl, rnk.
Herald added a subscriber: hiraditya.
Herald added a project: All.
jhuber6 requested review of this revision.
Herald added subscribers: llvm-commits, cfe-commits, sstefan1.
Herald added projects: clang, LLVM.

The new driver registers all the offloading entries by first storing a
structure containing the necessary information into a special section
and then iterating the section at runtime. This is done in ELF targets
using the linker defined `__start` and `__stop` sections. However for
COFF targets these are not provided. This is instead done by generating
sections as described here <https://learn.microsoft.com/en-us/cpp/preprocessor/init-seg?redirectedfrom=MSDN&view=msvc-170>.

This patch adds the initial support required to offloadon COFF targets
by implementing this for the new driver. We use the `.<kind>$Ox` section
for COFF now.

NOTE: I have not tested the runtime functionality of patch as I do not
have a Windows machine set up yet.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D137470

Files:
  clang/lib/CodeGen/CGCUDANV.cpp
  clang/test/CodeGenCUDA/offloading-entries.cu
  clang/test/Driver/linker-wrapper-image.c
  clang/test/OpenMP/declare_target_link_codegen.cpp
  clang/tools/clang-linker-wrapper/OffloadWrapper.cpp
  llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
  llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D137470.473355.patch
Type: text/x-patch
Size: 32465 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20221104/b7598dea/attachment-0001.bin>


More information about the cfe-commits mailing list