blob: defcd93cc668410881ce866a296f08e6635e0fd9 [file] [log] [blame]
Chris Lattner6d952572003-05-08 03:46:51 +00001; Demonstrate all of the variable argument handling intrinsic functions plus
2; the va_arg instruction.
Chris Lattner92858ed2003-05-08 02:39:37 +00003
Chris Lattner6d952572003-05-08 03:46:51 +00004implementation
5declare void %llvm.va_start(sbyte**, ...)
6declare void %llvm.va_copy(sbyte**, sbyte*)
7declare void %llvm.va_end(sbyte**)
Chris Lattner92858ed2003-05-08 02:39:37 +00008
9int %test(int %X, ...) {
10 %ap = alloca sbyte*
Chris Lattner6d952572003-05-08 03:46:51 +000011 %aq = alloca sbyte*
12 call void (sbyte**, ...)* %llvm.va_start(sbyte** %ap, int %X)
13 %apv = load sbyte** %ap
14 call void %llvm.va_copy(sbyte** %aq, sbyte* %apv)
15 call void %llvm.va_end(sbyte** %aq)
16
Chris Lattner92858ed2003-05-08 02:39:37 +000017 %tmp = va_arg sbyte** %ap, int
Chris Lattner6d952572003-05-08 03:46:51 +000018
19 call void %llvm.va_end(sbyte** %ap)
Chris Lattner92858ed2003-05-08 02:39:37 +000020 ret int %tmp
21}