[PATCH] D110054: [AMDGPU] - change ASAN init/fini kernels linkage to external.

praveen velliengiri via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 21 02:34:37 PDT 2021


pvellien updated this revision to Diff 373819.
pvellien added a comment.

Added test.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110054/new/

https://reviews.llvm.org/D110054

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


Index: llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll
===================================================================
--- llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll
+++ llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll
@@ -1,4 +1,5 @@
 ; RUN: opt -S -mtriple=amdgcn--  -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 [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @foo, i8* null }, { i32, void ()*, i8* } { i32 1, void ()* @foo.5, i8* null }]
 @llvm.global_dtors = appending addrspace(1) global [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void ()* @bar, i8* null }, { i32, void ()*, i8* } { i32 1, void ()* @bar.5, i8* null }]
@@ -11,6 +12,11 @@
 ; CHECK-NEXT: call void @bar
 ; CHECK-NEXT: call void @bar.5
 
+; CHECK-VIS: FUNC   GLOBAL PROTECTED {{.*}} amdgcn.device.init
+; CHECK-VIS: OBJECT GLOBAL DEFAULT {{.*}} amdgcn.device.init.kd
+; CHECK-VIS: FUNC   GLOBAL PROTECTED {{.*}} amdgcn.device.fini
+; CHECK-VIS: OBJECT   GLOBAL DEFAULT {{.*}} amdgcn.device.fini.kd
+
 define internal void @foo() {
   ret void
 }
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,4 +1,5 @@
 ; RUN: opt -S -mtriple=amdgcn--  -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 }]
@@ -9,6 +10,11 @@
 ; CHECK-LABEL: amdgpu_kernel void @amdgcn.device.fini() #1
 ; CHECK-NEXT: call void @bar
 
+; CHECK-VIS: FUNC   GLOBAL PROTECTED {{.*}} amdgcn.device.init
+; CHECK-VIS: OBJECT GLOBAL DEFAULT {{.*}} amdgcn.device.init.kd
+; CHECK-VIS: FUNC   GLOBAL PROTECTED {{.*}} amdgcn.device.fini
+; CHECK-VIS: OBJECT   GLOBAL DEFAULT {{.*}} amdgcn.device.fini.kd
+
 define internal void @foo() {
   ret void
 }
Index: llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
@@ -36,7 +36,7 @@
 
     Function *InitOrFiniKernel = Function::createWithDefaultAttr(
         FunctionType::get(Type::getVoidTy(M.getContext()), false),
-        GlobalValue::InternalLinkage, 0, InitOrFiniKernelName, &M);
+        GlobalValue::ExternalLinkage, 0, InitOrFiniKernelName, &M);
     BasicBlock *InitOrFiniKernelBB =
         BasicBlock::Create(M.getContext(), "", InitOrFiniKernel);
     ReturnInst::Create(M.getContext(), InitOrFiniKernelBB);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110054.373819.patch
Type: text/x-patch
Size: 3116 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210921/64032242/attachment.bin>


More information about the llvm-commits mailing list