diff --git a/amd/comgr/src/comgr-compiler.cpp b/amd/comgr/src/comgr-compiler.cpp index 3f1ae14381dcf..bd549f84ee335 100644 --- a/amd/comgr/src/comgr-compiler.cpp +++ b/amd/comgr/src/comgr-compiler.cpp @@ -1884,6 +1884,7 @@ amd_comgr_status_t AMDGPUCompiler::compileSpirvToRelocatable() { amd_comgr_data_set_t TranslatedSpirvT; if (auto Status = amd_comgr_create_data_set(&TranslatedSpirvT)) return Status; + ScopedDataSetReleaser SDSR(TranslatedSpirvT); DataSet *TranslatedSpirv = DataSet::convert(TranslatedSpirvT); if (auto Status = translateSpirvToBitcodeImpl(InSet, TranslatedSpirv)) diff --git a/amd/comgr/src/comgr.h b/amd/comgr/src/comgr.h index e419a46baf6d5..59e05aade02cd 100644 --- a/amd/comgr/src/comgr.h +++ b/amd/comgr/src/comgr.h @@ -133,6 +133,15 @@ class ScopedDataObjectReleaser { ~ScopedDataObjectReleaser() { Obj->release(); } }; +class ScopedDataSetReleaser { + amd_comgr_data_set_t Set; + +public: + ScopedDataSetReleaser(amd_comgr_data_set_t Set) : Set(Set) {} + + ~ScopedDataSetReleaser() { amd_comgr_destroy_data_set(Set); } +}; + struct DataSet { DataSet();