[llvm] [Offload] Make AMDGPU plugin handle empty allocation properly (PR #142383)
Joseph Huber via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 2 06:02:03 PDT 2025
https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/142383
Summary:
`malloc(0)` and `free(nullptr)` are both defined by the standard but we
current trigger erros and assertions on them. Fix that so this works
with empty arguments.
>From b9feacb7ceff03856750f8984f83b106edcdb3fd Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Mon, 2 Jun 2025 08:00:40 -0500
Subject: [PATCH] [Offload] Make AMDGPU plugin handle empty allocation properly
Summary:
`malloc(0)` and `free(nullptr)` are both defined by the standard but we
current trigger erros and assertions on them. Fix that so this works
with empty arguments.
---
offload/plugins-nextgen/amdgpu/src/rtl.cpp | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
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<ReleaseBufferArgsTy *>(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);
More information about the llvm-commits
mailing list