Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/X86/aligned-variadic.ll
Show All 11 Lines | entry: | ||||
%arraydecay1 = bitcast [1 x %struct.__va_list_tag]* %va to i8* | %arraydecay1 = bitcast [1 x %struct.__va_list_tag]* %va to i8* | ||||
call void @llvm.va_start(i8* %arraydecay1) | call void @llvm.va_start(i8* %arraydecay1) | ||||
%overflow_arg_area_p = getelementptr inbounds [1 x %struct.__va_list_tag], [1 x %struct.__va_list_tag]* %va, i64 0, i64 0, i32 2 | %overflow_arg_area_p = getelementptr inbounds [1 x %struct.__va_list_tag], [1 x %struct.__va_list_tag]* %va, i64 0, i64 0, i32 2 | ||||
%overflow_arg_area = load i8*, i8** %overflow_arg_area_p, align 8 | %overflow_arg_area = load i8*, i8** %overflow_arg_area_p, align 8 | ||||
%overflow_arg_area.next = getelementptr i8, i8* %overflow_arg_area, i64 24 | %overflow_arg_area.next = getelementptr i8, i8* %overflow_arg_area, i64 24 | ||||
store i8* %overflow_arg_area.next, i8** %overflow_arg_area_p, align 8 | store i8* %overflow_arg_area.next, i8** %overflow_arg_area_p, align 8 | ||||
; X32: leal 68(%esp), [[REG:%.*]] | ; X32: leal 68(%esp), [[REG:%.*]] | ||||
; X32: movl [[REG]], 16(%esp) | ; X32: movl [[REG]], 16(%esp) | ||||
; X64: leaq 232(%rsp), [[REG:%.*]] | ; X64: leaq 256(%rsp), [[REG:%.*]] | ||||
; X64: movq [[REG]], 184(%rsp) | ; X64: movq [[REG]], 184(%rsp) | ||||
; X64: leaq 176(%rsp), %rdi | ; X64: leaq 176(%rsp), %rdi | ||||
call void @qux(%struct.__va_list_tag* %arraydecay) | call void @qux(%struct.__va_list_tag* %arraydecay) | ||||
ret void | ret void | ||||
} | } | ||||
; Function Attrs: nounwind | ; Function Attrs: nounwind | ||||
declare void @llvm.va_start(i8*) | declare void @llvm.va_start(i8*) | ||||
declare void @qux(%struct.__va_list_tag*) | declare void @qux(%struct.__va_list_tag*) |