define i32 @test(i32 %X, ...) { %ap = alloca i8*, i32 1024 %ap2 = bitcast i8** %ap to i8* call void @llvm.va_start(i8* %ap2) %tmp = va_arg i8** %ap, i32 call void @llvm.va_end(i8* %ap2) ret i32 %tmp } declare void @llvm.va_start(i8*) declare void @llvm.va_copy(i8*, i8*) declare void @llvm.va_end(i8*) define i32 @main(i32, i8**, i8**) { %ret = call i32(i32, ...)* @test(i32 0, i32 0) ret i32 %ret }