summaryrefslogtreecommitdiff
path: root/offload/liboffload/src/OffloadImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'offload/liboffload/src/OffloadImpl.cpp')
-rw-r--r--offload/liboffload/src/OffloadImpl.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/offload/liboffload/src/OffloadImpl.cpp b/offload/liboffload/src/OffloadImpl.cpp
index da2101529ffe..c2a35a245e2a 100644
--- a/offload/liboffload/src/OffloadImpl.cpp
+++ b/offload/liboffload/src/OffloadImpl.cpp
@@ -480,6 +480,14 @@ Error olCreateProgram_impl(ol_device_handle_t Device, const void *ProgData,
}
Error olDestroyProgram_impl(ol_program_handle_t Program) {
+ auto &Device = Program->Image->getDevice();
+ if (auto Err = Device.unloadBinary(Program->Image))
+ return Err;
+
+ auto &LoadedImages = Device.LoadedImages;
+ LoadedImages.erase(
+ std::find(LoadedImages.begin(), LoadedImages.end(), Program->Image));
+
return olDestroy(Program);
}