[llvm-branch-commits] [openmp] ce93de3 - [libomptarget][nfc] Remove data_sharing type aliasing
Jon Chesterfield via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Dec 10 18:18:29 PST 2020
Author: Jon Chesterfield
Date: 2020-12-11T02:13:34Z
New Revision: ce93de3bb284c944676c7b81890156d9d80b1db9
URL: https://github.com/llvm/llvm-project/commit/ce93de3bb284c944676c7b81890156d9d80b1db9
DIFF: https://github.com/llvm/llvm-project/commit/ce93de3bb284c944676c7b81890156d9d80b1db9.diff
LOG: [libomptarget][nfc] Remove data_sharing type aliasing
[libomptarget][nfc] Remove data_sharing type aliasing
Libomptarget previous used __kmpc_data_sharing_slot to access values of type
__kmpc_data_sharing_{worker,master}_slot_static. This aliasing violation was
benign in practice. The master type has since been removed, so a single type
can be used instead.
This is particularly helpful for the transition to an openmp deviceRTL, as the
c++/openmp compiler for amdgcn currently rejects the flexible array member for
being an incomplete type. Serves the same purpose as abandoned D86324.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D93075
Added:
Modified:
openmp/libomptarget/deviceRTLs/common/omptarget.h
openmp/libomptarget/deviceRTLs/interface.h
Removed:
################################################################################
diff --git a/openmp/libomptarget/deviceRTLs/common/omptarget.h b/openmp/libomptarget/deviceRTLs/common/omptarget.h
index 0ccd71c3b55f..fc4eb6bfbcfa 100644
--- a/openmp/libomptarget/deviceRTLs/common/omptarget.h
+++ b/openmp/libomptarget/deviceRTLs/common/omptarget.h
@@ -74,6 +74,16 @@ class omptarget_nvptx_SharedArgs {
extern DEVICE SHARED omptarget_nvptx_SharedArgs
omptarget_nvptx_globalArgs;
+// Worker slot type which is initialized with the default worker slot
+// size of 4*32 bytes.
+struct __kmpc_data_sharing_slot {
+ __kmpc_data_sharing_slot *Next;
+ __kmpc_data_sharing_slot *Prev;
+ void *PrevSlotStackPtr;
+ void *DataEnd;
+ char Data[DS_Worker_Warp_Slot_Size];
+};
+
// Data structure to keep in shared memory that traces the current slot, stack,
// and frame pointer as well as the active threads that didn't exit the current
// environment.
@@ -83,15 +93,6 @@ struct DataSharingStateTy {
void * volatile FramePtr[DS_Max_Warp_Number];
__kmpc_impl_lanemask_t ActiveThreads[DS_Max_Warp_Number];
};
-// Additional worker slot type which is initialized with the default worker slot
-// size of 4*32 bytes.
-struct __kmpc_data_sharing_worker_slot_static {
- __kmpc_data_sharing_slot *Next;
- __kmpc_data_sharing_slot *Prev;
- void *PrevSlotStackPtr;
- void *DataEnd;
- char Data[DS_Worker_Warp_Slot_Size];
-};
extern DEVICE SHARED DataSharingStateTy DataSharingState;
@@ -213,7 +214,7 @@ class omptarget_nvptx_TeamDescr {
workDescrForActiveParallel; // one, ONLY for the active par
ALIGN(16)
- __kmpc_data_sharing_worker_slot_static worker_rootS[DS_Max_Warp_Number];
+ __kmpc_data_sharing_slot worker_rootS[DS_Max_Warp_Number];
};
////////////////////////////////////////////////////////////////////////////////
diff --git a/openmp/libomptarget/deviceRTLs/interface.h b/openmp/libomptarget/deviceRTLs/interface.h
index 330880556293..5f539bc3fd66 100644
--- a/openmp/libomptarget/deviceRTLs/interface.h
+++ b/openmp/libomptarget/deviceRTLs/interface.h
@@ -438,17 +438,6 @@ EXTERN void __kmpc_begin_sharing_variables(void ***GlobalArgs, size_t nArgs);
EXTERN void __kmpc_end_sharing_variables();
EXTERN void __kmpc_get_shared_variables(void ***GlobalArgs);
-// The slot used for data sharing by the master and worker threads. We use a
-// complete (default size version and an incomplete one so that we allow sizes
-// greater than the default).
-struct __kmpc_data_sharing_slot {
- __kmpc_data_sharing_slot *Next;
- __kmpc_data_sharing_slot *Prev;
- void *PrevSlotStackPtr;
- void *DataEnd;
- char Data[];
-};
-
// SPMD execution mode interrogation function.
EXTERN int8_t __kmpc_is_spmd_exec_mode();
More information about the llvm-branch-commits
mailing list