[llvm] e90b512 - [AMDGPU] Change ASAN init/fini kernels linkage to external.

Anshil Gandhi via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 27 10:50:49 PDT 2021


Author: Praveen Velliengiri
Date: 2021-09-27T11:50:37-06:00
New Revision: e90b512c4d1f6dc5bb290bdcf2c5d1e920324d03

URL: https://github.com/llvm/llvm-project/commit/e90b512c4d1f6dc5bb290bdcf2c5d1e920324d03
DIFF: https://github.com/llvm/llvm-project/commit/e90b512c4d1f6dc5bb290bdcf2c5d1e920324d03.diff

LOG: [AMDGPU] Change ASAN init/fini kernels linkage to external.

HSA runtime fails to find the symbols for Init and Fini kernels as
they mark with internal linkage, changing the linkage to external
to fix those errors.

Differential Revision: https://reviews.llvm.org/D110054

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
index 1111b12e099a..95b848e26f46 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUCtorDtorLowering.cpp
@@ -36,7 +36,7 @@ class AMDGPUCtorDtorLowering final : public ModulePass {
 
     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);

diff  --git a/llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll b/llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll
index 1a247070b99f..475f00f84450 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll
+++ b/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
 }

diff  --git a/llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll b/llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll
index e23ea2329b92..113c7b0f08c4 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll
+++ b/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
 }
@@ -28,4 +34,4 @@ define internal void @bar.5() {
 }
 
 ; CHECK: attributes #0 = { "device-init" }
-; CHECK: attributes #1 = { "device-fini" } 
+; CHECK: attributes #1 = { "device-fini" }
\ No newline at end of file


        


More information about the llvm-commits mailing list