Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/Thumb/frame-access.ll
Show First 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | entry: | ||||
ret i32 %call | ret i32 %call | ||||
} | } | ||||
; CHECK-LABEL: test_varargs_vla | ; CHECK-LABEL: test_varargs_vla | ||||
; Three incoming register varargs | ; Three incoming register varargs | ||||
; CHECK: sub sp, #12 | ; CHECK: sub sp, #12 | ||||
; Setup frame pointer | ; Setup frame pointer | ||||
; CHECK: add r7, sp, #8 | ; CHECK: add r7, sp, #8 | ||||
; Register varargs stored via FP | ; Register varargs stored via FP | ||||
; CHECK: str r3, [r7, #16] | ; CHECK-DAG: str r3, [r7, #16] | ||||
; CHECK-NEXT: str r2, [r7, #12] | ; CHECK-DAG: str r2, [r7, #12] | ||||
; CHECK-NEXT: str r1, [r7, #8] | ; CHECK-DAG: str r1, [r7, #8] | ||||
; Moving SP, access via SP | ; Moving SP, access via SP | ||||
; int test_args_moving_sp(int a, int b, int c, int d, int e) { | ; int test_args_moving_sp(int a, int b, int c, int d, int e) { | ||||
; int v[4]; | ; int v[4]; | ||||
; return f(v, a, b + c + d, e, s) + h(v, v+1, v+2); | ; return f(v, a, b + c + d, e, s) + h(v, v+1, v+2); | ||||
; } | ; } | ||||
define dso_local i32 @test_args_moving_sp(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e) local_unnamed_addr { | define dso_local i32 @test_args_moving_sp(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e) local_unnamed_addr { | ||||
entry: | entry: | ||||
▲ Show 20 Lines • Show All 229 Lines • Show Last 20 Lines |