summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/non-integral-pointers.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/non-integral-pointers.ll b/llvm/test/Transforms/InstCombine/non-integral-pointers.ll
index d5e2569179b..4f54fe6737d 100644
--- a/llvm/test/Transforms/InstCombine/non-integral-pointers.ll
+++ b/llvm/test/Transforms/InstCombine/non-integral-pointers.ll
@@ -18,3 +18,31 @@ define i8 addrspace(3)* @f_1() {
%result = getelementptr i8, i8 addrspace(3)* null, i64 50
ret i8 addrspace(3)* %result
}
+
+define void @f_2(i8 addrspace(4)** %ptr0, i8 addrspace(4)** %ptr1) {
+; It is not okay to convert the load/store pair to load and store
+; integers, since pointers in address space 4 are non-integral.
+
+; CHECK-LABEL: @f_2(
+entry:
+; CHECK: %val = load i8 addrspace(4)*, i8 addrspace(4)** %ptr0, align 8
+; CHECK: store i8 addrspace(4)* %val, i8 addrspace(4)** %ptr1, align 8
+; CHECK-NOT: load i64
+; CHECK-NOT: store i64
+ %val = load i8 addrspace(4)*, i8 addrspace(4)** %ptr0
+ store i8 addrspace(4)* %val, i8 addrspace(4)** %ptr1
+ ret void
+}
+
+define void @f_3(i8 addrspace(3)** %ptr0, i8 addrspace(3)** %ptr1) {
+; It *is* okay to convert the load/store pair to load and store
+; integers, since pointers in address space 3 are integral.
+
+; CHECK-LABEL: @f_3(
+entry:
+; CHECK: load i64
+; CHECK: store i64
+ %val = load i8 addrspace(3)*, i8 addrspace(3)** %ptr0
+ store i8 addrspace(3)* %val, i8 addrspace(3)** %ptr1
+ ret void
+}
OpenPOWER on IntegriCloud