aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/backend/call-variadic.c
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-11-16 21:00:12 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-11-17 10:04:37 +0100
commitf48b9566eba161bdce4bf4c4af2839ce6843b90e (patch)
tree6b561a5d2c97d5cb6f020a298704d020117e68e8 /validation/backend/call-variadic.c
parent5ee9e7bf1cb3c1a07f830adfcd0dcff5c10639c1 (diff)
downloadsparse-dev-f48b9566eba161bdce4bf4c4af2839ce6843b90e.tar.gz
llvm: add testcase for calling variadic functions
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/backend/call-variadic.c')
-rw-r--r--validation/backend/call-variadic.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/validation/backend/call-variadic.c b/validation/backend/call-variadic.c
new file mode 100644
index 00000000..19afacee
--- /dev/null
+++ b/validation/backend/call-variadic.c
@@ -0,0 +1,28 @@
+#define NULL ((void*)0)
+
+extern int print(const char *msg, ...);
+
+int foo(const char *fmt, int a, long l, int *p);
+int foo(const char *fmt, int a, long l, int *p)
+{
+ return print(fmt, 'x', a, __LINE__, l, 0L, p, NULL);
+}
+
+/*
+ * check-name: call-variadic
+ * check-command: sparse-llvm-dis -m64 $file
+ * check-known-to-fail
+ *
+ * check-output-start
+; ModuleID = '<stdin>'
+source_filename = "sparse"
+
+define i32 @foo(i8* %ARG1, i32 %ARG2, i64 %ARG3, i32* %ARG4) {
+L0:
+ %R5 = call i32 (i8*, ...) @print(i8* %ARG1, i32 120, i32 %ARG2, i32 8, i64 %ARG3, i64 0, i32* %ARG4, i8* null)
+ ret i32 %R5
+}
+
+declare i32 @print(i8*, ...)
+ * check-output-end
+ */