diff options
Diffstat (limited to 'offload/libomptarget/PluginManager.cpp')
-rw-r--r-- | offload/libomptarget/PluginManager.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/offload/libomptarget/PluginManager.cpp b/offload/libomptarget/PluginManager.cpp index c4d99df..b57a2f8 100644 --- a/offload/libomptarget/PluginManager.cpp +++ b/offload/libomptarget/PluginManager.cpp @@ -128,6 +128,13 @@ void PluginManager::initializeAllDevices() { initializeDevice(Plugin, DeviceId); } } + // After all plugins are initialized, register atExit cleanup handlers + std::atexit([]() { + // Interop cleanup should be done before the plugins are deinitialized as + // the backend libraries may be already unloaded. + if (PM) + PM->InteropTbl.clear(); + }); } // Returns a pointer to the binary descriptor, upgrading from a legacy format if |