aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/MergeFunc/address-spaces.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/MergeFunc/address-spaces.ll')
-rw-r--r--test/Transforms/MergeFunc/address-spaces.ll35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/Transforms/MergeFunc/address-spaces.ll b/test/Transforms/MergeFunc/address-spaces.ll
new file mode 100644
index 0000000..0d66b82
--- /dev/null
+++ b/test/Transforms/MergeFunc/address-spaces.ll
@@ -0,0 +1,35 @@
+; RUN: opt -S -mergefunc < %s | FileCheck %s
+
+target datalayout = "p:32:32:32-p1:32:32:32-p2:16:16:16"
+
+declare void @foo(i32) nounwind
+
+; None of these functions should be merged
+
+define i32 @store_as0(i32* %x) {
+; CHECK-LABEL: @store_as0(
+; CHECK: call void @foo(
+ %gep = getelementptr i32* %x, i32 4
+ %y = load i32* %gep
+ call void @foo(i32 %y) nounwind
+ ret i32 %y
+}
+
+define i32 @store_as1(i32 addrspace(1)* %x) {
+; CHECK-LABEL: @store_as1(
+; CHECK: call void @foo(
+ %gep = getelementptr i32 addrspace(1)* %x, i32 4
+ %y = load i32 addrspace(1)* %gep
+ call void @foo(i32 %y) nounwind
+ ret i32 %y
+}
+
+define i32 @store_as2(i32 addrspace(2)* %x) {
+; CHECK-LABEL: @store_as2(
+; CHECK: call void @foo(
+ %gep = getelementptr i32 addrspace(2)* %x, i32 4
+ %y = load i32 addrspace(2)* %gep
+ call void @foo(i32 %y) nounwind
+ ret i32 %y
+}
+