aboutsummaryrefslogtreecommitdiff
path: root/offload/libomptarget/PluginManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'offload/libomptarget/PluginManager.cpp')
-rw-r--r--offload/libomptarget/PluginManager.cpp7
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