Files
c3c/test/test_suite/abi/pass_large_aarch.c3t

33 lines
763 B
Plaintext

// #target: linux-aarch64
module pass_large;
struct Large
{
void*[8] pointers;
}
extern fn void pass_large(Large large);
fn void example()
{
Large l = {};
pass_large(l);
pass_large(l);
}
/* #expect: pass_large.ll
define void @pass_large.example()
entry:
%l = alloca %Large, align 8
%indirectarg = alloca %Large, align 8
%indirectarg1 = alloca %Large, align 8
call void @llvm.memset.p0.i64(ptr align 8 %l, i8 0, i64 64, i1 false)
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %indirectarg, ptr align 8 %l, i32 64, i1 false)
call void @pass_large(ptr align 8 %indirectarg)
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %indirectarg1, ptr align 8 %l, i32 64, i1 false)
call void @pass_large(ptr align 8 %indirectarg1)
ret void