aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/AMDGPU/internalize.ll
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-04-16 16:01:22 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-04-16 16:01:22 +0000
commit71d5a2540a98c81f5bcaeb48805e0e2881f530ef (patch)
tree5343938942df402b49ec7300a1c25a2d4ccd5821 /test/CodeGen/AMDGPU/internalize.ll
parent31bbf64f3a4974a2d6c8b3b27ad2f519caf74057 (diff)
Diffstat (limited to 'test/CodeGen/AMDGPU/internalize.ll')
-rw-r--r--test/CodeGen/AMDGPU/internalize.ll35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/CodeGen/AMDGPU/internalize.ll b/test/CodeGen/AMDGPU/internalize.ll
new file mode 100644
index 000000000000..968b1d326a76
--- /dev/null
+++ b/test/CodeGen/AMDGPU/internalize.ll
@@ -0,0 +1,35 @@
+; RUN: opt -O1 -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck %s
+; CHECK-NOT: unused
+; CHECK-NOT: foo_used
+; CHECK: gvar_used
+; CHECK: main_kernel
+
+@gvar_unused = addrspace(1) global i32 undef, align 4
+@gvar_used = addrspace(1) global i32 undef, align 4
+
+; Function Attrs: alwaysinline nounwind
+define amdgpu_kernel void @foo_unused(i32 addrspace(1)* %out) local_unnamed_addr #1 {
+entry:
+ store i32 1, i32 addrspace(1)* %out
+ ret void
+}
+
+; Function Attrs: alwaysinline nounwind
+define amdgpu_kernel void @foo_used(i32 addrspace(1)* %out, i32 %tid) local_unnamed_addr #1 {
+entry:
+ store i32 %tid, i32 addrspace(1)* %out
+ ret void
+}
+
+define amdgpu_kernel void @main_kernel() {
+entry:
+ %tid = call i32 @llvm.amdgcn.workitem.id.x()
+ tail call void @foo_used(i32 addrspace(1)* @gvar_used, i32 %tid) nounwind
+ ret void
+}
+
+declare i32 @llvm.amdgcn.workitem.id.x() #0
+
+attributes #0 = { nounwind readnone }
+
+attributes #1 = { alwaysinline nounwind }