blob: bf0c6f2ac6f4ad07e6cdf6b737116c2e78f0b6a1 [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
Chris Lattner25e6e992003-10-21 15:36:21 +00005declare sbyte* %llvm.va_start()
6declare sbyte* %llvm.va_copy(sbyte*)
7declare void %llvm.va_end(sbyte*)
Chris Lattner92858ed2003-05-08 02:39:37 +00008
9int %test(int %X, ...) {
Chris Lattner25e6e992003-10-21 15:36:21 +000010 %ap = call sbyte* %llvm.va_start()
11 %aq = call sbyte* %llvm.va_copy(sbyte* %ap)
12 call void %llvm.va_end(sbyte* %aq)
Chris Lattner6d952572003-05-08 03:46:51 +000013
Chris Lattner25e6e992003-10-21 15:36:21 +000014 %tmp = vaarg sbyte* %ap, int
15 %ap2 = vanext sbyte* %ap, int
Chris Lattner6d952572003-05-08 03:46:51 +000016
Chris Lattner25e6e992003-10-21 15:36:21 +000017 call void %llvm.va_end(sbyte* %ap2)
Chris Lattner92858ed2003-05-08 02:39:37 +000018 ret int %tmp
19}