blob: 6186d137ef7fdd64421a03db1b8cffa603b70fc0 [file] [log] [blame]
Matthias Braun4682ac62017-05-05 22:04:05 +00001; RUN: llc -o - %s | FileCheck %s
2target triple="arm--"
3
4@glob = external global i32*
5
6declare void @bar(i32*, [20000 x i8]* byval)
7
8; CHECK-LABEL: foo:
9; We should see the stack getting additional alignment
10; CHECK: sub sp, sp, #16
11; CHECK: bic sp, sp, #31
12; And a base pointer getting used.
13; CHECK: mov r6, sp
14; Which is passed to the call
Matthias Braun537d0392017-06-17 02:08:18 +000015; CHECK: add [[REG:r[0-9]+|lr]], r6, #19456
Matthias Braun4682ac62017-05-05 22:04:05 +000016; CHECK: add r0, [[REG]], #536
17; CHECK: bl bar
18define void @foo([20000 x i8]* %addr) {
19 %tmp = alloca [4 x i32], align 32
20 %tmp0 = getelementptr [4 x i32], [4 x i32]* %tmp, i32 0, i32 0
21 call void @bar(i32* %tmp0, [20000 x i8]* byval %addr)
22 ret void
23}
24