[Openmp-commits] [PATCH] D51653: [libomptarget] Remove `Devices` from `RTLInfoTy`

Sergey Dmitriev via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Tue Sep 4 13:01:01 PDT 2018


sdmitriev created this revision.
sdmitriev added reviewers: Hahnfeld, grokos.
Herald added a subscriber: openmp-commits.

This patch removes `RTLInfoTy::Devices` to fix a potential problem of using invalid pointers stored in this vector. The problem is described in comments to this patch https://reviews.llvm.org/D51623


Repository:
  rOMP OpenMP

https://reviews.llvm.org/D51653

Files:
  libomptarget/src/rtl.cpp
  libomptarget/src/rtl.h


Index: libomptarget/src/rtl.h
===================================================================
--- libomptarget/src/rtl.h
+++ libomptarget/src/rtl.h
@@ -43,7 +43,6 @@
                                    // i.e. the OpenMP index of the first device
                                    // to be registered with this RTL.
   int32_t NumberOfDevices;         // Number of devices this RTL deals with.
-  std::vector<DeviceTy *> Devices; // one per device (NumberOfDevices in total).
 
   void *LibraryHandler;
 
@@ -74,7 +73,7 @@
   // The existence of the mutex above makes RTLInfoTy non-copyable.
   // We need to provide a copy constructor explicitly.
   RTLInfoTy()
-      : Idx(-1), NumberOfDevices(-1), Devices(), LibraryHandler(0),
+      : Idx(-1), NumberOfDevices(-1), LibraryHandler(0),
 #ifdef OMPTARGET_DEBUG
         RTLName(),
 #endif
@@ -86,7 +85,6 @@
   RTLInfoTy(const RTLInfoTy &r) : Mtx() {
     Idx = r.Idx;
     NumberOfDevices = r.NumberOfDevices;
-    Devices = r.Devices;
     LibraryHandler = r.LibraryHandler;
 #ifdef OMPTARGET_DEBUG
     RTLName = r.RTLName;
Index: libomptarget/src/rtl.cpp
===================================================================
--- libomptarget/src/rtl.cpp
+++ libomptarget/src/rtl.cpp
@@ -223,9 +223,6 @@
           Devices[start + device_id].DeviceID = start + device_id;
           // RTL local device ID
           Devices[start + device_id].RTLDeviceID = device_id;
-
-          // Save pointer to device in RTL in case we want to unregister the RTL
-          R.Devices.push_back(&Devices[start + device_id]);
         }
 
         // Initialize the index of this RTL and save it in the used RTLs.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51653.163891.patch
Type: text/x-patch
Size: 1661 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20180904/57c75587/attachment.bin>


More information about the Openmp-commits mailing list