summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorPete Cooper <peter_cooper@apple.com>2015-04-30 22:15:59 +0000
committerPete Cooper <peter_cooper@apple.com>2015-04-30 22:15:59 +0000
commit5111881cfcd8e5e61aa637b92acd536dd7bc0325 (patch)
treeec395933af6aa9c013ac01301b6657df06f2d45f /llvm/test/CodeGen/ARM
parentaf67602e1491592b73f8909b26c8c2539009c8d7 (diff)
downloadbcm5719-llvm-5111881cfcd8e5e61aa637b92acd536dd7bc0325.tar.gz
bcm5719-llvm-5111881cfcd8e5e61aa637b92acd536dd7bc0325.zip
Don't always apply kill flag in thumb2 ABS pseudo expansion.
The expansion for t2ABS was always setting the kill flag on the rsb instruction. It should instead only be set on rsb if it was set on the original ABS instruction. rdar://problem/20752113 llvm-svn: 236272
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/t2abs-killflags.ll23
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/t2abs-killflags.ll b/llvm/test/CodeGen/ARM/t2abs-killflags.ll
new file mode 100644
index 00000000000..eed8f6719ae
--- /dev/null
+++ b/llvm/test/CodeGen/ARM/t2abs-killflags.ll
@@ -0,0 +1,23 @@
+; RUN: llc %s -o - -verify-machineinstrs | FileCheck %s
+
+target datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"
+target triple = "thumbv7s-unknown-unknown"
+
+; Test that we don't crash the machine verifier when expanding t2ABS.
+; It was applying the kill flag to its source, even if the original t2ABS didn't
+; kill the operand prior to pseudo expansion.
+
+; Function Attrs: noreturn
+declare void @foo(i32, i32) #0
+
+; CHECK-LABEL: @test
+; CHECK: rsbmi
+define void @test(i32 %arg) {
+ %cmp58 = icmp slt i32 %arg, 0
+ %sub62 = sub nsw i32 0, %arg
+ %l.1 = select i1 %cmp58, i32 %sub62, i32 %arg
+ call void @foo(i32 %l.1, i32 %arg) #0
+ unreachable
+}
+
+attributes #0 = { noreturn }
OpenPOWER on IntegriCloud