1*9880d681SAndroid Build Coastguard Worker;PR15293: ARM codegen ice - expected larger existing stack allocation 2*9880d681SAndroid Build Coastguard Worker;RUN: llc -mtriple=arm-linux-gnueabihf < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: foo: 5*9880d681SAndroid Build Coastguard Worker;CHECK: sub sp, sp, #16 6*9880d681SAndroid Build Coastguard Worker;CHECK: push {r11, lr} 7*9880d681SAndroid Build Coastguard Worker;CHECK: str r0, [sp, #8] 8*9880d681SAndroid Build Coastguard Worker;CHECK: add r0, sp, #8 9*9880d681SAndroid Build Coastguard Worker;CHECK: bl fooUseParam 10*9880d681SAndroid Build Coastguard Worker;CHECK: pop {r11, lr} 11*9880d681SAndroid Build Coastguard Worker;CHECK: add sp, sp, #16 12*9880d681SAndroid Build Coastguard Worker;CHECK: mov pc, lr 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: foo2: 15*9880d681SAndroid Build Coastguard Worker;CHECK: sub sp, sp, #16 16*9880d681SAndroid Build Coastguard Worker;CHECK: push {r11, lr} 17*9880d681SAndroid Build Coastguard Worker;CHECK: str r0, [sp, #8] 18*9880d681SAndroid Build Coastguard Worker;CHECK: add r0, sp, #8 19*9880d681SAndroid Build Coastguard Worker;CHECK: str r2, [sp, #16] 20*9880d681SAndroid Build Coastguard Worker;CHECK: bl fooUseParam 21*9880d681SAndroid Build Coastguard Worker;CHECK: add r0, sp, #16 22*9880d681SAndroid Build Coastguard Worker;CHECK: bl fooUseParam 23*9880d681SAndroid Build Coastguard Worker;CHECK: pop {r11, lr} 24*9880d681SAndroid Build Coastguard Worker;CHECK: add sp, sp, #16 25*9880d681SAndroid Build Coastguard Worker;CHECK: mov pc, lr 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: doFoo: 28*9880d681SAndroid Build Coastguard Worker;CHECK: push {r11, lr} 29*9880d681SAndroid Build Coastguard Worker;CHECK: ldr r0, 30*9880d681SAndroid Build Coastguard Worker;CHECK: ldr r0, [r0] 31*9880d681SAndroid Build Coastguard Worker;CHECK: bl foo 32*9880d681SAndroid Build Coastguard Worker;CHECK: pop {r11, lr} 33*9880d681SAndroid Build Coastguard Worker;CHECK: mov pc, lr 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: doFoo2: 37*9880d681SAndroid Build Coastguard Worker;CHECK: push {r11, lr} 38*9880d681SAndroid Build Coastguard Worker;CHECK: ldr r0, 39*9880d681SAndroid Build Coastguard Worker;CHECK: mov r1, #0 40*9880d681SAndroid Build Coastguard Worker;CHECK: ldr r0, [r0] 41*9880d681SAndroid Build Coastguard Worker;CHECK: mov r2, r0 42*9880d681SAndroid Build Coastguard Worker;CHECK: bl foo2 43*9880d681SAndroid Build Coastguard Worker;CHECK: pop {r11, lr} 44*9880d681SAndroid Build Coastguard Worker;CHECK: mov pc, lr 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker%artz = type { i32 } 48*9880d681SAndroid Build Coastguard Worker@static_val = constant %artz { i32 777 } 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdeclare void @fooUseParam(%artz* ) 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerdefine void @foo(%artz* byval %s) { 53*9880d681SAndroid Build Coastguard Worker call void @fooUseParam(%artz* %s) 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdefine void @foo2(%artz* byval %s, i32 %p, %artz* byval %s2) { 58*9880d681SAndroid Build Coastguard Worker call void @fooUseParam(%artz* %s) 59*9880d681SAndroid Build Coastguard Worker call void @fooUseParam(%artz* %s2) 60*9880d681SAndroid Build Coastguard Worker ret void 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine void @doFoo() { 65*9880d681SAndroid Build Coastguard Worker call void @foo(%artz* byval @static_val) 66*9880d681SAndroid Build Coastguard Worker ret void 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine void @doFoo2() { 70*9880d681SAndroid Build Coastguard Worker call void @foo2(%artz* byval @static_val, i32 0, %artz* byval @static_val) 71*9880d681SAndroid Build Coastguard Worker ret void 72*9880d681SAndroid Build Coastguard Worker} 73*9880d681SAndroid Build Coastguard Worker 74