diff --git a/offload/plugins-nextgen/amdgpu/src/rtl.cpp b/offload/plugins-nextgen/amdgpu/src/rtl.cpp index 2733796611d9b..abb83686151a2 100644 --- a/offload/plugins-nextgen/amdgpu/src/rtl.cpp +++ b/offload/plugins-nextgen/amdgpu/src/rtl.cpp @@ -420,7 +420,7 @@ struct AMDGPUMemoryManagerTy : public DeviceAllocatorTy { assert(PtrStorage && "Invalid pointer storage"); *PtrStorage = MemoryManager->allocate(Size, nullptr); - if (*PtrStorage == nullptr) + if (Size && *PtrStorage == nullptr) return Plugin::error(ErrorCode::OUT_OF_RESOURCES, "failure to allocate from AMDGPU memory manager"); @@ -429,8 +429,6 @@ struct AMDGPUMemoryManagerTy : public DeviceAllocatorTy { /// Release an allocation to be reused. Error deallocate(void *Ptr) { - assert(Ptr && "Invalid pointer"); - if (MemoryManager->free(Ptr)) return Plugin::error(ErrorCode::UNKNOWN, "failure to deallocate from AMDGPU memory manager"); @@ -1204,7 +1202,6 @@ struct AMDGPUStreamTy { ReleaseBufferArgsTy *Args = reinterpret_cast(Data); assert(Args && "Invalid arguments"); assert(Args->MemoryManager && "Invalid memory manager"); - assert(Args->Buffer && "Invalid buffer"); // Release the allocation to the memory manager. return Args->MemoryManager->deallocate(Args->Buffer); diff --git a/offload/test/api/omp_device_memory.c b/offload/test/api/omp_device_memory.c index 60f47e94f90db..8876fc91ba403 100644 --- a/offload/test/api/omp_device_memory.c +++ b/offload/test/api/omp_device_memory.c @@ -2,6 +2,7 @@ #include #include +#include int main() { const int N = 64; @@ -24,4 +25,9 @@ int main() { printf("PASS\n"); omp_free(device_ptr, llvm_omp_target_device_mem_alloc); + + // Make sure this interface works. + void *ptr = omp_alloc(0, llvm_omp_target_device_mem_alloc); + assert(!ptr && "Ptr not (nullptr)"); + omp_free(ptr, llvm_omp_target_device_mem_alloc); }