blob: 968b1d326a76db3ec90335ba73a20629fd4c32b6 [file] [log] [blame]
Stanislav Mekhanoshina3b72792017-01-30 21:05:18 +00001; RUN: opt -O1 -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck %s
2; CHECK-NOT: unused
3; CHECK-NOT: foo_used
4; CHECK: gvar_used
5; CHECK: main_kernel
6
7@gvar_unused = addrspace(1) global i32 undef, align 4
8@gvar_used = addrspace(1) global i32 undef, align 4
9
10; Function Attrs: alwaysinline nounwind
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000011define amdgpu_kernel void @foo_unused(i32 addrspace(1)* %out) local_unnamed_addr #1 {
Stanislav Mekhanoshina3b72792017-01-30 21:05:18 +000012entry:
13 store i32 1, i32 addrspace(1)* %out
14 ret void
15}
16
17; Function Attrs: alwaysinline nounwind
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000018define amdgpu_kernel void @foo_used(i32 addrspace(1)* %out, i32 %tid) local_unnamed_addr #1 {
Stanislav Mekhanoshina3b72792017-01-30 21:05:18 +000019entry:
20 store i32 %tid, i32 addrspace(1)* %out
21 ret void
22}
23
24define amdgpu_kernel void @main_kernel() {
25entry:
26 %tid = call i32 @llvm.amdgcn.workitem.id.x()
27 tail call void @foo_used(i32 addrspace(1)* @gvar_used, i32 %tid) nounwind
28 ret void
29}
30
31declare i32 @llvm.amdgcn.workitem.id.x() #0
32
33attributes #0 = { nounwind readnone }
34
35attributes #1 = { alwaysinline nounwind }