[all-commits] [llvm/llvm-project] 7cea0c: [libomptarget] Revert all improvements to support

Jon Chesterfield via All-commits all-commits at lists.llvm.org
Wed Nov 6 07:44:26 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7cea0cea77d15b70d54083ec7c17ae5d49b3f53f
      https://github.com/llvm/llvm-project/commit/7cea0cea77d15b70d54083ec7c17ae5d49b3f53f
  Author: Jon Chesterfield <jonathanchesterfield at gmail.com>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt
    M openmp/libomptarget/deviceRTLs/nvptx/src/data_sharing.cu
    M openmp/libomptarget/deviceRTLs/nvptx/src/debug.h
    M openmp/libomptarget/deviceRTLs/nvptx/src/libcall.cu
    M openmp/libomptarget/deviceRTLs/nvptx/src/omptarget-nvptx.h
    R openmp/libomptarget/deviceRTLs/nvptx/src/support.cu
    M openmp/libomptarget/deviceRTLs/nvptx/src/support.h
    A openmp/libomptarget/deviceRTLs/nvptx/src/supporti.h
    M openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h
    R openmp/libomptarget/deviceRTLs/nvptx/unity.cu

  Log Message:
  -----------
  [libomptarget] Revert all improvements to support

Summary:
[libomptarget] Revert all improvements to support

The change to unity build for nvcc has broken the build for some developers.
This patch reverts to a known-working state.

There has been some confusion over exactly how the build broke. I think we
have reached a common understanding that the disappearing symbols are from
the bitcode library built by clang. The static archive built by nvcc may show the
same problem. Some of the confusion arose from building the deviceRTL twice
and using one or the other library based on various environmental factors.

I'm pretty sure the problem is clang expanding `__forceinline__` into both `__inline__`
and `attribute(("always_inline"))`. The `__inline__` attribute resolves to linkonce_odr
which is not safe for exporting symbols from translation units.

"always_inline" is the desired semantic for small functions defined in one translation
unit that are intended to be inlined at link time. "inline" is not.

This therefore reintroduces the dependency hazard of supporti.h and some code
duplication, and blocks progress separating deviceRTL into reusable components.

See also D69857, D69859 for attempts at a fix instead of a revert.

Reviewers: ABataev, jdoerfert, grokos, ikitayama, tianshilei1992

Reviewed By: ABataev

Subscribers: mgorny, jfb, openmp-commits

Tags: #openmp

Differential Revision: https://reviews.llvm.org/D69885




More information about the All-commits mailing list