1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-linux-androideabi -verify-machineinstrs | FileCheck %s -check-prefix=ARM-android 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-linux-unknown-gnueabi -verify-machineinstrs | FileCheck %s -check-prefix=ARM-linux 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-linux-androideabi -filetype=obj 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-linux-unknown-gnueabi -filetype=obj 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; Just to prevent the alloca from being optimized away 7*9880d681SAndroid Build Coastguard Workerdeclare void @dummy_use(i32*, i32) 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine i32 @test_basic(i32 %l) #0 { 10*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 %l 11*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 %l) 12*9880d681SAndroid Build Coastguard Worker %terminate = icmp eq i32 %l, 0 13*9880d681SAndroid Build Coastguard Worker br i1 %terminate, label %true, label %false 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workertrue: 16*9880d681SAndroid Build Coastguard Worker ret i32 0 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerfalse: 19*9880d681SAndroid Build Coastguard Worker %newlen = sub i32 %l, 1 20*9880d681SAndroid Build Coastguard Worker %retvalue = call i32 @test_basic(i32 %newlen) 21*9880d681SAndroid Build Coastguard Worker ret i32 %retvalue 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; ARM-linux: test_basic: 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; ARM-linux: push {r4, r5} 26*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: mrc p15, #0, r4, c13, c0, #3 27*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: mov r5, sp 28*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: ldr r4, [r4, #4] 29*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: cmp r4, r5 30*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: blo .LBB0_2 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker; ARM-linux: mov r4, #16 33*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: mov r5, #0 34*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: stmdb sp!, {lr} 35*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: bl __morestack 36*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: ldm sp!, {lr} 37*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: pop {r4, r5} 38*9880d681SAndroid Build Coastguard Worker; ARM-linux-NEXT: bx lr 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; ARM-linux: pop {r4, r5} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; ARM-android: test_basic: 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; ARM-android: push {r4, r5} 46*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: mrc p15, #0, r4, c13, c0, #3 47*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: mov r5, sp 48*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: ldr r4, [r4, #252] 49*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: cmp r4, r5 50*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: blo .LBB0_2 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; ARM-android: mov r4, #16 53*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: mov r5, #0 54*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: stmdb sp!, {lr} 55*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: bl __morestack 56*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: ldm sp!, {lr} 57*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: pop {r4, r5} 58*9880d681SAndroid Build Coastguard Worker; ARM-android-NEXT: bx lr 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; ARM-android: pop {r4, r5} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerattributes #0 = { "split-stack" } 65