diff options
Diffstat (limited to 'offload/liboffload/src/OffloadImpl.cpp')
| -rw-r--r-- | offload/liboffload/src/OffloadImpl.cpp | 8 |
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); } |
