blob: 382f5dc281de24a4e8a612b8643941d2a1768c39 [file] [log] [blame]
Evan Chengeb56dca2010-11-22 18:12:04 +00001; rdar://8465407
Tim Northoverb4ddc082014-05-30 10:09:59 +00002; RUN: llc < %s -mtriple=thumbv7-apple-ios -arm-atomic-cfg-tidy=0 | FileCheck %s
Evan Chengeb56dca2010-11-22 18:12:04 +00003
4%struct.buf = type opaque
5
6declare void @bar() nounwind optsize
7
Oliver Stannard9aa6f012016-08-23 09:19:22 +00008define void @foo() nounwind optsize "no-frame-pointer-elim"="true" {
Stephen Lind24ab202013-07-14 06:24:09 +00009; CHECK-LABEL: foo:
Evan Chengeb56dca2010-11-22 18:12:04 +000010; CHECK: push
Cameron Zwarich338d3622011-03-11 21:52:04 +000011; CHECK: mov r7, sp
Evan Chengeb56dca2010-11-22 18:12:04 +000012; CHECK: sub sp, #4
13entry:
14 %m.i = alloca %struct.buf*, align 4
15 br label %bb
16
17bb:
18 br i1 undef, label %bb3, label %bb2
19
20bb2:
21 call void @bar() nounwind optsize
22 br i1 undef, label %bb, label %bb3
23
24bb3:
25 br i1 undef, label %return, label %bb
26
27return:
28; CHECK: %return
29; 'mov sp, r7' would have left sp in an invalid state
30; CHECK-NOT: mov sp, r7
31; CHECK-NOT: sub, sp, #4
32; CHECK: add sp, #4
33 ret void
34}