Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / ARM / 2013-04-05-Small-ByVal-Structs-PR15293.ll
blob8669935bd95dbb425a80e7243f3e06923b4709ff
1 ;PR15293: ARM codegen ice - expected larger existing stack allocation
2 ;RUN: llc -mtriple=arm-linux-gnueabihf < %s | FileCheck %s
4 ;CHECK-LABEL: foo:
5 ;CHECK:         sub     sp, sp, #16
6 ;CHECK:         push    {r11, lr}
7 ;CHECK:         str     r0, [sp, #8]
8 ;CHECK:         add     r0, sp, #8
9 ;CHECK:         bl      fooUseParam
10 ;CHECK:         pop     {r11, lr}
11 ;CHECK:         add     sp, sp, #16
12 ;CHECK:         mov     pc, lr
14 ;CHECK-LABEL: foo2:
15 ;CHECK:         sub     sp, sp, #16
16 ;CHECK:         push    {r11, lr}
17 ;CHECK:         str     r0, [sp, #8]
18 ;CHECK:         add     r0, sp, #8
19 ;CHECK:         str     r2, [sp, #16]
20 ;CHECK:         bl      fooUseParam
21 ;CHECK:         add     r0, sp, #16
22 ;CHECK:         bl      fooUseParam
23 ;CHECK:         pop     {r11, lr}
24 ;CHECK:         add     sp, sp, #16
25 ;CHECK:         mov     pc, lr
27 ;CHECK-LABEL: doFoo:
28 ;CHECK:         push    {r11, lr}
29 ;CHECK:         ldr     r0,
30 ;CHECK:         ldr     r0, [r0]
31 ;CHECK:         bl      foo
32 ;CHECK:         pop     {r11, lr}
33 ;CHECK:         mov     pc, lr
36 ;CHECK-LABEL: doFoo2:
37 ;CHECK:         push    {r11, lr}
38 ;CHECK:         ldr     r0,
39 ;CHECK:         mov     r1, #0
40 ;CHECK:         ldr     r0, [r0]
41 ;CHECK:         mov     r2, r0
42 ;CHECK:         bl      foo2
43 ;CHECK:         pop     {r11, lr}
44 ;CHECK:         mov     pc, lr
47 %artz = type { i32 }
48 @static_val = constant %artz { i32 777 }
50 declare void @fooUseParam(ptr )
52 define void @foo(ptr byval(%artz) %s) {
53   call void @fooUseParam(ptr %s)
54   ret void
57 define void @foo2(ptr byval(%artz) %s, i32 %p, ptr byval(%artz) %s2) {
58   call void @fooUseParam(ptr %s)
59   call void @fooUseParam(ptr %s2)
60   ret void
64 define void @doFoo() {
65   call void @foo(ptr byval(%artz) @static_val)
66   ret void
69 define void @doFoo2() {
70   call void @foo2(ptr byval(%artz) @static_val, i32 0, ptr byval(%artz) @static_val)
71   ret void