diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index fefcb2fa39f5f..7de12004dd572 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -229,7 +229,7 @@ ProgramManager::createURProgram(const RTDeviceBinaryImage &Img, { std::lock_guard Lock(MNativeProgramsMutex); // associate the UR program with the image it was created for - NativePrograms[Res] = &Img; + NativePrograms.insert({Res, &Img}); } Ctx->addDeviceGlobalInitializer(Res, {Device}, &Img); @@ -840,7 +840,7 @@ ur_program_handle_t ProgramManager::getBuiltURProgram( { std::lock_guard Lock(MNativeProgramsMutex); - NativePrograms[BuiltProgram.get()] = &Img; + NativePrograms.insert({BuiltProgram.get(), &Img}); for (RTDeviceBinaryImage *LinkedImg : DeviceImagesToLink) { NativePrograms.insert({BuiltProgram.get(), LinkedImg}); } @@ -2500,7 +2500,7 @@ device_image_plain ProgramManager::build(const device_image_plain &DeviceImage, { std::lock_guard Lock(MNativeProgramsMutex); - NativePrograms[BuiltProgram.get()] = &Img; + NativePrograms.insert({BuiltProgram.get(), &Img}); } ContextImpl->addDeviceGlobalInitializer(BuiltProgram.get(), Devs, &Img); diff --git a/sycl/source/detail/program_manager/program_manager.hpp b/sycl/source/detail/program_manager/program_manager.hpp index f973e8043b769..cfedb33879460 100644 --- a/sycl/source/detail/program_manager/program_manager.hpp +++ b/sycl/source/detail/program_manager/program_manager.hpp @@ -398,7 +398,7 @@ class ProgramManager { // the underlying program disposed of), so the map can't be used in any way // other than binary image lookup with known live UrProgram as the key. // NOTE: access is synchronized via the MNativeProgramsMutex - std::unordered_map + std::unordered_multimap NativePrograms; /// Protects NativePrograms that can be changed by class' methods.