+; Demonstrate all of the variable argument handling intrinsic functions plus
+; the va_arg instruction.
-
+implementation
+declare void %llvm.va_start(sbyte**, ...)
+declare void %llvm.va_copy(sbyte**, sbyte*)
+declare void %llvm.va_end(sbyte**)
int %test(int %X, ...) {
%ap = alloca sbyte*
- ; This is not a legal testcase, it just shows the syntax for va_arg
+ %aq = alloca sbyte*
+ call void (sbyte**, ...)* %llvm.va_start(sbyte** %ap, int %X)
+ %apv = load sbyte** %ap
+ call void %llvm.va_copy(sbyte** %aq, sbyte* %apv)
+ call void %llvm.va_end(sbyte** %aq)
+
%tmp = va_arg sbyte** %ap, int
+
+ call void %llvm.va_end(sbyte** %ap)
ret int %tmp
}