diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-11-16 21:00:12 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-11-17 10:04:37 +0100 |
| commit | f48b9566eba161bdce4bf4c4af2839ce6843b90e (patch) | |
| tree | 6b561a5d2c97d5cb6f020a298704d020117e68e8 | |
| parent | 5ee9e7bf1cb3c1a07f830adfcd0dcff5c10639c1 (diff) | |
| download | sparse-dev-f48b9566eba161bdce4bf4c4af2839ce6843b90e.tar.gz | |
llvm: add testcase for calling variadic functions
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
| -rw-r--r-- | validation/backend/call-variadic.c | 28 |
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 + */ |
