diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/varargs+aarch64.qbe | 10 | ||||
-rw-r--r-- | test/varargs+riscv64.qbe | 11 | ||||
-rw-r--r-- | test/varargs+x86_64-sysv.c | 8 | ||||
-rw-r--r-- | test/varargs+x86_64-sysv.qbe | 10 |
4 files changed, 39 insertions, 0 deletions
diff --git a/test/varargs+aarch64.qbe b/test/varargs+aarch64.qbe index 5b6e830..c444c85 100644 --- a/test/varargs+aarch64.qbe +++ b/test/varargs+aarch64.qbe @@ -45,3 +45,13 @@ function $f3(w %.1, ...) { @while_join.9 ret } +export +function $f4(...) { +@start.10 + %.1 =l alloc8 32 +@body.11 + vastart %.1 + %.2 =d vaarg %.1 + %.3 =w vaarg %.1 + ret +} diff --git a/test/varargs+riscv64.qbe b/test/varargs+riscv64.qbe index 48638bb..1b0851e 100644 --- a/test/varargs+riscv64.qbe +++ b/test/varargs+riscv64.qbe @@ -49,3 +49,14 @@ function $f3(w %.1, ...) { %.10 =l loadl %.3 ret } +export +function $f4(...) { +@start.10 + %.1 =l alloc8 8 +@body.11 + vastart %.1 + %.2 =d vaarg %.1 + %.3 =w vaarg %.1 + %.4 =l loadl %.1 + ret +} diff --git a/test/varargs+x86_64-sysv.c b/test/varargs+x86_64-sysv.c index 71bf1d3..dfa1b98 100644 --- a/test/varargs+x86_64-sysv.c +++ b/test/varargs+x86_64-sysv.c @@ -24,3 +24,11 @@ void f3(int n, ...) { } __builtin_va_end(ap); } + +void f4(...) { + __builtin_va_list ap; + __builtin_va_start(ap); + __builtin_va_arg(ap, double); + __builtin_va_arg(ap, int); + __builtin_va_end(ap); +} diff --git a/test/varargs+x86_64-sysv.qbe b/test/varargs+x86_64-sysv.qbe index 46904b6..4fa8e7b 100644 --- a/test/varargs+x86_64-sysv.qbe +++ b/test/varargs+x86_64-sysv.qbe @@ -47,3 +47,13 @@ function $f3(w %.1, ...) { @while_join.9 ret } +export +function $f4(...) { +@start.10 + %.1 =l alloc8 24 +@body.11 + vastart %.1 + %.2 =d vaarg %.1 + %.3 =w vaarg %.1 + ret +} |