[llvm] 49b8ca3 - AMDGPU: Don't crash on global_ctor/dtor declaration
Ruiling Song via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 23 06:05:48 PDT 2022
Author: Ruiling Song
Date: 2022-06-23T21:04:54+08:00
New Revision: 49b8ca3f7c4f0c76ab4a04e9a7b46ccd29f07011
URL: https://github.com/llvm/llvm-project/commit/49b8ca3f7c4f0c76ab4a04e9a7b46ccd29f07011
DIFF: https://github.com/llvm/llvm-project/commit/49b8ca3f7c4f0c76ab4a04e9a7b46ccd29f07011.diff
LOG: AMDGPU: Don't crash on global_ctor/dtor declaration
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D128320
Added:
llvm/test/CodeGen/AMDGPU/lower-ctor-dtor-declaration.ll
Modified:
llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
index 04bf623bfa46d..8fcf669041b98 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
@@ -50,7 +50,7 @@ class AMDGPUCtorDtorLowering final : public ModulePass {
}
bool createInitOrFiniKernel(Module &M, GlobalVariable *GV, bool IsCtor) {
- if (!GV)
+ if (!GV || !GV->hasInitializer())
return false;
ConstantArray *GA = dyn_cast<ConstantArray>(GV->getInitializer());
if (!GA || GA->getNumOperands() == 0)
diff --git a/llvm/test/CodeGen/AMDGPU/lower-ctor-dtor-declaration.ll b/llvm/test/CodeGen/AMDGPU/lower-ctor-dtor-declaration.ll
new file mode 100644
index 0000000000000..d293984ed7d09
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/lower-ctor-dtor-declaration.ll
@@ -0,0 +1,8 @@
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 < %s | FileCheck %s
+
+ at llvm.global_ctors = external global [2 x { i32, void ()*, i8* }]
+ at llvm.global_dtors = external global [2 x { i32, void ()*, i8* }]
+
+; No amdgpu_kernels emitted for global_ctors declaration
+; CHECK-NOT: amdgcn.device.init
+; CHECK-NOT: amdgcn.device.fini
More information about the llvm-commits
mailing list