summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLouis Gerbarg <lgg@apple.com>2014-04-14 21:05:05 +0000
committerLouis Gerbarg <lgg@apple.com>2014-04-14 21:05:05 +0000
commit261f0df185a7cf6a8ef18b530833567ce11246e3 (patch)
tree48d05e5103436c91e2a72fa09676de98fec9735d /test
parent27539d46ccde86358f32226907149083d7a4dcf7 (diff)
downloadllvm-261f0df185a7cf6a8ef18b530833567ce11246e3.tar.gz
llvm-261f0df185a7cf6a8ef18b530833567ce11246e3.tar.bz2
llvm-261f0df185a7cf6a8ef18b530833567ce11246e3.tar.xz
Fix for codegen bug that could cause illegal cmn instruction generation
In rare cases the dead definition elimination pass code can cause illegal cmn instructions when it replaces dead registers on instructions that use unmaterialized frame indexes. This patch disables the dead definition optimization for instructions which include frame index operands. rdar://16438284 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206208 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/ARM64/dead-def-frame-index.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/CodeGen/ARM64/dead-def-frame-index.ll b/test/CodeGen/ARM64/dead-def-frame-index.ll
new file mode 100644
index 0000000000..4f8cc859ee
--- /dev/null
+++ b/test/CodeGen/ARM64/dead-def-frame-index.ll
@@ -0,0 +1,18 @@
+; RUN: llc -march=arm64 < %s | FileCheck %s
+
+target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
+target triple = "arm64-apple-ios7.0.0"
+
+; Function Attrs: nounwind ssp uwtable
+define i32 @test1() #0 {
+ %tmp1 = alloca i8
+ %tmp2 = alloca i32, i32 4096
+ %tmp3 = icmp eq i8* %tmp1, null
+ %tmp4 = zext i1 %tmp3 to i32
+
+ ret i32 %tmp4
+
+ ; CHECK-LABEL: test1
+ ; CHECK: adds [[TEMP:[a-z0-9]+]], sp, #16384
+ ; CHECK: adds [[TEMP]], [[TEMP]], #15
+}