summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2014-06-14 04:26:05 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2014-06-14 04:26:05 +0000
commite682a19a1c07b1da406c2112dc44fc48c688da1c (patch)
tree4b5e50299fe8df5e0ae8a9b6534b9f620d2ab717 /llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll
parent41aa27c96ba646b4ba8afb920514fc1560987c4b (diff)
downloadbcm5719-llvm-e682a19a1c07b1da406c2112dc44fc48c688da1c.tar.gz
bcm5719-llvm-e682a19a1c07b1da406c2112dc44fc48c688da1c.zip
R600: Fix asserts related to constant initializers
This would assert if a constant address space was extern and therefore didn't have an initializer. If the initializer was undef, it would hit the unreachable unhandled initializer case. An extern global should never really occur since we don't have machine linking, but bugpoint likes to remove initializers. llvm-svn: 210967
Diffstat (limited to 'llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll')
-rw-r--r--llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll b/llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll
new file mode 100644
index 00000000000..ab82e7ee799
--- /dev/null
+++ b/llvm/test/CodeGen/R600/no-initializer-constant-addrspace.ll
@@ -0,0 +1,20 @@
+; RUN: llc -march=r600 -mcpu=SI -o /dev/null %s
+; RUN: llc -march=r600 -mcpu=cypress -o /dev/null %s
+
+@extern_const_addrspace = external unnamed_addr addrspace(2) constant [5 x i32], align 4
+
+; FUNC-LABEL: @load_extern_const_init
+define void @load_extern_const_init(i32 addrspace(1)* %out) nounwind {
+ %val = load i32 addrspace(2)* getelementptr ([5 x i32] addrspace(2)* @extern_const_addrspace, i64 0, i64 3), align 4
+ store i32 %val, i32 addrspace(1)* %out, align 4
+ ret void
+}
+
+@undef_const_addrspace = unnamed_addr addrspace(2) constant [5 x i32] undef, align 4
+
+; FUNC-LABEL: @load_undef_const_init
+define void @load_undef_const_init(i32 addrspace(1)* %out) nounwind {
+ %val = load i32 addrspace(2)* getelementptr ([5 x i32] addrspace(2)* @undef_const_addrspace, i64 0, i64 3), align 4
+ store i32 %val, i32 addrspace(1)* %out, align 4
+ ret void
+}
OpenPOWER on IntegriCloud