1; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa 2; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 --implicit-check-not=define %s 3; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 --implicit-check-not=define %s 4; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 --implicit-check-not=define %s 5 6; CHECK0: define internal void @HelperD 7; CHECK0: define amdgpu_kernel void @D 8 9; CHECK1: define internal void @HelperC 10; CHECK1: define amdgpu_kernel void @C 11 12; CHECK2: define hidden void @HelperA 13; CHECK2: define hidden void @HelperB 14; CHECK2: define hidden void @CallCandidate 15; CHECK2: define internal void @HelperC 16; CHECK2: define internal void @HelperD 17; CHECK2: define amdgpu_kernel void @A 18; CHECK2: define amdgpu_kernel void @B 19 20@addrthief = global [3 x ptr] [ptr @HelperA, ptr @HelperB, ptr @CallCandidate] 21 22define internal void @HelperA(ptr %call) { 23 call void %call() 24 ret void 25} 26 27define internal void @HelperB(ptr %call) { 28 call void @HelperC() 29 call void %call() 30 call void @HelperD() 31 ret void 32} 33 34define internal void @CallCandidate() { 35 ret void 36} 37 38define internal void @HelperC() { 39 ret void 40} 41 42define internal void @HelperD() { 43 ret void 44} 45 46define amdgpu_kernel void @A(ptr %call) { 47 call void @HelperA(ptr %call) 48 ret void 49} 50 51define amdgpu_kernel void @B(ptr %call) { 52 call void @HelperB(ptr %call) 53 ret void 54} 55 56define amdgpu_kernel void @C() { 57 call void @HelperC() 58 ret void 59} 60 61define amdgpu_kernel void @D() { 62 call void @HelperD() 63 ret void 64} 65