[PATCH] D138923: AMDGPU: Erase llvm.global_ctors/global_dtors after lowering

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 29 07:06:06 PST 2022


arsenm created this revision.
arsenm added reviewers: AMDGPU, pvellien, reshabh, JonChesterfield, sameerds.
Herald added subscribers: kosarev, foad, kerbowa, hiraditya, tpr, dstuttard, yaxunl, jvesely, kzhuravl.
Herald added a project: All.
arsenm requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

We should be able to run the pass multiple times without breaking
anything. If we still need to track these for some reason, we could
replace with new entries for the kernels.


https://reviews.llvm.org/D138923

Files:
  llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
  llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll


Index: llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll
===================================================================
--- llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll
+++ llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll
@@ -1,15 +1,25 @@
-; RUN: opt -S -mtriple=amdgcn--  -amdgpu-lower-ctor-dtor < %s | FileCheck %s
-; RUN: opt -S -mtriple=amdgcn--  -passes=amdgpu-lower-ctor-dtor < %s | FileCheck %s
+; RUN: opt -S -mtriple=amdgcn-- -amdgpu-lower-ctor-dtor < %s | FileCheck %s
+; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-ctor-dtor < %s | FileCheck %s
+
+; Make sure we get the same result if we run multiple times
+; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-ctor-dtor,amdgpu-lower-ctor-dtor < %s | FileCheck %s
 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -filetype=obj -o - < %s | llvm-readelf -s - 2>&1 | FileCheck %s -check-prefix=CHECK-VIS
 
 @llvm.global_ctors = appending addrspace(1) global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @foo, i8* null }]
 @llvm.global_dtors = appending addrspace(1) global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @bar, i8* null }]
 
+; CHECK-NOT: @llvm.global_ctors
+; CHECK-NOT: @llvm.global_dtors
+
 ; CHECK-LABEL: amdgpu_kernel void @amdgcn.device.init() #0
 ; CHECK-NEXT: call void @foo
+; CHECK-NEXT: ret void
 
 ; CHECK-LABEL: amdgpu_kernel void @amdgcn.device.fini() #1
 ; CHECK-NEXT: call void @bar
+; CHECK-NEXT: ret void
+
+; CHECK-NOT: amdgcn.device.
 
 ; CHECK-VIS: FUNC   GLOBAL PROTECTED {{.*}} amdgcn.device.init
 ; CHECK-VIS: OBJECT GLOBAL DEFAULT {{.*}} amdgcn.device.init.kd
Index: llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
@@ -67,6 +67,8 @@
   }
 
   appendToUsed(M, {InitOrFiniKernel});
+
+  GV->eraseFromParent();
   return true;
 }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138923.478582.patch
Type: text/x-patch
Size: 1960 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221129/f19baf0d/attachment.bin>


More information about the llvm-commits mailing list