[libomptarget] Revert all improvements to support
authorJon Chesterfield <jonathanchesterfield@gmail.com>
Wed, 6 Nov 2019 15:43:46 +0000 (15:43 +0000)
committerJon Chesterfield <jonathanchesterfield@gmail.com>
Wed, 6 Nov 2019 15:44:10 +0000 (15:44 +0000)
commit7cea0cea77d15b70d54083ec7c17ae5d49b3f53f
tree6d43f2ca868cd7795070c3cc4708adc632b85f98
parentce2b5cb6decb5cce32adde0d23bdea521da0908b
[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
openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt
openmp/libomptarget/deviceRTLs/nvptx/src/data_sharing.cu
openmp/libomptarget/deviceRTLs/nvptx/src/debug.h
openmp/libomptarget/deviceRTLs/nvptx/src/libcall.cu
openmp/libomptarget/deviceRTLs/nvptx/src/omptarget-nvptx.h
openmp/libomptarget/deviceRTLs/nvptx/src/support.h
openmp/libomptarget/deviceRTLs/nvptx/src/supporti.h [moved from openmp/libomptarget/deviceRTLs/nvptx/src/support.cu with 96% similarity]
openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h
openmp/libomptarget/deviceRTLs/nvptx/unity.cu [deleted file]