blob: 30ac2aa283b3eec2a122ef4c84cb76651fa34bc1 [file] [log] [blame]
; RUN: llc -mtriple=aarch64-- < %s | FileCheck %s
@trampg = internal global [36 x i8] zeroinitializer, align 8
declare void @llvm.init.trampoline(ptr, ptr, ptr);
declare ptr @llvm.adjust.trampoline(ptr);
define i64 @f(ptr nest %c, i64 %x, i64 %y) {
%sum = add i64 %x, %y
ret i64 %sum
}
define i64 @func1() {
%val = alloca i64
%nval = bitcast ptr %val to ptr
%tramp = alloca [36 x i8], align 8
; CHECK: mov w1, #36
; CHECK: bl __trampoline_setup
call void @llvm.init.trampoline(ptr %tramp, ptr @f, ptr %nval)
%fp = call ptr @llvm.adjust.trampoline(ptr %tramp)
ret i64 0
}
define i64 @func2() {
%val = alloca i64
%nval = bitcast ptr %val to ptr
; CHECK: mov w1, #36
; CHECK: bl __trampoline_setup
call void @llvm.init.trampoline(ptr @trampg, ptr @f, ptr %nval)
%fp = call ptr @llvm.adjust.trampoline(ptr @trampg)
ret i64 0
}