summaryrefslogtreecommitdiff
path: root/test/CodeGen/ARM/thumb1-ldst-opt.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/ARM/thumb1-ldst-opt.ll')
-rw-r--r--test/CodeGen/ARM/thumb1-ldst-opt.ll27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/thumb1-ldst-opt.ll b/test/CodeGen/ARM/thumb1-ldst-opt.ll
new file mode 100644
index 0000000000000..eb82385de0c56
--- /dev/null
+++ b/test/CodeGen/ARM/thumb1-ldst-opt.ll
@@ -0,0 +1,27 @@
+; RUN: llc -stop-after block-placement -o /dev/null %s | FileCheck %s
+
+target triple = "thumbv6m-none-none"
+
+define i32* @foo(i32* readonly %p0) {
+entry:
+ %add.ptr = getelementptr inbounds i32, i32* %p0, i32 10
+ %arrayidx = getelementptr inbounds i32, i32* %p0, i32 13
+ %0 = load i32, i32* %arrayidx, align 4
+ %arrayidx1 = getelementptr inbounds i32, i32* %p0, i32 12
+ %1 = load i32, i32* %arrayidx1, align 4
+ %add = add nsw i32 %1, %0
+ %arrayidx2 = getelementptr inbounds i32, i32* %p0, i32 11
+ %2 = load i32, i32* %arrayidx2, align 4
+ %add3 = add nsw i32 %add, %2
+ %3 = load i32, i32* %add.ptr, align 4
+ %add5 = add nsw i32 %add3, %3
+ tail call void @g(i32 %add5)
+ ret i32* %p0
+}
+
+declare void @g(i32)
+
+; CHECK-LABEL: name: foo
+; CHECK: [[BASE:%r[0-7]]], {{.*}} tADDi8
+; CHECK-NOT: [[BASE]] = tLDMIA_UPD {{.*}} [[BASE]]
+; CHECK: tLDMIA killed [[BASE]], {{.*}} def [[BASE]]