blob: b96b41875c3a8e82d20fc279db7d2666e295bf6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
; RUN: opt < %s -expand-varargs -S | FileCheck %s
declare i32 @varargs_func(i32 %arg, ...)
%MyStruct = type { i64, i64 }
; Test passing a struct by value.
define i32 @varargs_call_struct(%MyStruct* %ptr) {
%result = call i32 (i32, ...)* @varargs_func(i32 111, i64 222, %MyStruct* byval %ptr)
ret i32 %result
}
; CHECK: define i32 @varargs_call_struct(%MyStruct* %ptr) {
; CHECK: %vararg_ptr1 = getelementptr <{ i64, %MyStruct }>* %vararg_buffer, i32 0, i32 1
; CHECK: %1 = bitcast %MyStruct* %vararg_ptr1 to i8*
; CHECK: %2 = bitcast %MyStruct* %ptr to i8*
; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 1, i1 false)
|