[Openmp-commits] [PATCH] D64943: [Clang][OpenMP offload] Eliminate use of OpenMP linker script

Vyacheslav Zakharin via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Wed Aug 7 11:43:56 PDT 2019


vzakhari added inline comments.


================
Comment at: clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp:226
+    // Add this function to global destructors.
+    appendToGlobalDtors(M, Func, 0);
+  }
----------------
ABataev wrote:
> sdmitriev wrote:
> > vzakhari wrote:
> > > FYI, llvm.global_dtors does not work on Windows.  The symbol will be placed into .CRT$XC[A-Z] portion of .CRT in TargetLoweringObjectFileImpl.cpp, so, basically, __tgt_unregister_lib will be called right after __tgt_register_lib.  We can either use a trick from ASAN, i.e. put llvm.global_dtors into .CRT$XT[A-Z] (I am not sure how solid this solution is) or call atexit() inside __tgt_register_lib to register __tgt_unregister_lib terminator.
> > It works as expected on Linux, so I guess this is just a bug in lowering code for Windows that need to be fixed.
> Still, better to call atexit(), this is common solution to call a global destructor/deinitializer
I agree.  One other thing: if `__tgt_register_lib` is never called do we want to call `__tgt_unregister_lib`?  It is possible with global_ctors/global_dtors, but not possible with atexit/cxa_atexit.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64943/new/

https://reviews.llvm.org/D64943





More information about the Openmp-commits mailing list