Index: libomptarget/plugins/generic-elf-64bit/src/rtl.cpp =================================================================== --- libomptarget/plugins/generic-elf-64bit/src/rtl.cpp +++ libomptarget/plugins/generic-elf-64bit/src/rtl.cpp @@ -66,7 +66,7 @@ /// Class containing all the device information. class RTLDeviceInfoTy { - std::vector FuncGblEntries; + std::vector> FuncGblEntries; public: std::list DynLibs; @@ -76,7 +76,8 @@ __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 @@ 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 @@ __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; }