aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/core/test_double_varargs.c34
-rw-r--r--tests/core/test_double_varargs.out2
-rw-r--r--tests/test_core.py5
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/core/test_double_varargs.c b/tests/core/test_double_varargs.c
new file mode 100644
index 00000000..d3eb3eed
--- /dev/null
+++ b/tests/core/test_double_varargs.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdarg.h>
+
+double func_int_double_1(int unused1, ...)
+{
+ int i;
+ double d;
+ va_list vl;
+ va_start(vl, unused1);
+ i = va_arg(vl, int);
+ d = va_arg(vl, double);
+ va_end(vl);
+ return i+d;
+}
+
+double func_int_double_2(int unused1, int unused2, ...)
+{
+ int i;
+ double d;
+ va_list vl;
+ va_start(vl, unused2);
+ i = va_arg(vl, int);
+ d = va_arg(vl, double);
+ va_end(vl);
+ return i+d;
+}
+
+int main() {
+ double ret = func_int_double_1(0, 5, 10.0);
+ printf("%f\n", ret); // Expects to print 15
+ ret = func_int_double_2(0, 0, 5, 10.0);
+ printf("%f\n", ret); // Expects to print 15
+}
+
diff --git a/tests/core/test_double_varargs.out b/tests/core/test_double_varargs.out
new file mode 100644
index 00000000..c907dece
--- /dev/null
+++ b/tests/core/test_double_varargs.out
@@ -0,0 +1,2 @@
+15.000000
+15.000000
diff --git a/tests/test_core.py b/tests/test_core.py
index 6a920a7b..ec5bb9fe 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -425,6 +425,11 @@ class T(RunnerCore): # Short name, to make it more fun to use manually on the co
self.do_run_from_file(src, output, 'waka fleefl asdfasdfasdfasdf'.split(' '))
+ def test_double_varargs(self):
+ test_path = path_from_root('tests', 'core', 'test_double_varargs')
+ src, output = (test_path + s for s in ('.c', '.out'))
+ self.do_run_from_file(src, output)
+
def test_i32_mul_precise(self):
if self.emcc_args == None: return self.skip('needs ta2')