diff options
Diffstat (limited to 'openmp/libomptarget/plugins/generic-elf-64bit/src/rtl.cpp')
| -rw-r--r-- | openmp/libomptarget/plugins/generic-elf-64bit/src/rtl.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/openmp/libomptarget/plugins/generic-elf-64bit/src/rtl.cpp b/openmp/libomptarget/plugins/generic-elf-64bit/src/rtl.cpp index 558388dbce6..951710a6782 100644 --- a/openmp/libomptarget/plugins/generic-elf-64bit/src/rtl.cpp +++ b/openmp/libomptarget/plugins/generic-elf-64bit/src/rtl.cpp @@ -66,7 +66,7 @@ struct FuncOrGblEntryTy { /// Class containing all the device information. class RTLDeviceInfoTy { - std::vector<FuncOrGblEntryTy> FuncGblEntries; + std::vector<std::list<FuncOrGblEntryTy>> FuncGblEntries; public: std::list<DynLibTy> DynLibs; @@ -76,7 +76,8 @@ public: __tgt_offload_entry *end) { assert(device_id < (int32_t)FuncGblEntries.size() && "Unexpected device id!"); - FuncOrGblEntryTy &E = FuncGblEntries[device_id]; + FuncGblEntries[device_id].emplace_back(); + FuncOrGblEntryTy &E = FuncGblEntries[device_id].back(); E.Table.EntriesBegin = begin; E.Table.EntriesEnd = end; @@ -86,7 +87,7 @@ public: bool findOffloadEntry(int32_t device_id, void *addr) { assert(device_id < (int32_t)FuncGblEntries.size() && "Unexpected device id!"); - FuncOrGblEntryTy &E = FuncGblEntries[device_id]; + FuncOrGblEntryTy &E = FuncGblEntries[device_id].back(); for (__tgt_offload_entry *i = E.Table.EntriesBegin, *e = E.Table.EntriesEnd; i < e; ++i) { @@ -101,7 +102,7 @@ public: __tgt_target_table *getOffloadEntriesTable(int32_t device_id) { assert(device_id < (int32_t)FuncGblEntries.size() && "Unexpected device id!"); - FuncOrGblEntryTy &E = FuncGblEntries[device_id]; + FuncOrGblEntryTy &E = FuncGblEntries[device_id].back(); return &E.Table; } |

