summary refs log tree commit diff stats
path: root/tests/ccgbugs
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-11-12 00:04:04 +0100
committerAraq <rumpf_a@web.de>2014-11-12 00:04:04 +0100
commit2d43fcafe0cedd4f78611dddccc31e1bef432aab (patch)
tree6703ed013d306dfe8417a3380ad2d997783c2073 /tests/ccgbugs
parentaae180e26b7392da5050048a7528d7ef3b25986f (diff)
downloadNim-2d43fcafe0cedd4f78611dddccc31e1bef432aab.tar.gz
fixes #1593
Diffstat (limited to 'tests/ccgbugs')
-rw-r--r--tests/ccgbugs/tcvarargs.nim34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/ccgbugs/tcvarargs.nim b/tests/ccgbugs/tcvarargs.nim
new file mode 100644
index 000000000..ebaf83a4a
--- /dev/null
+++ b/tests/ccgbugs/tcvarargs.nim
@@ -0,0 +1,34 @@
+discard """
+  output: '''17
+17
+17
+17
+17
+17
+'''
+"""
+
+# bug #1593
+
+{.emit: """
+#include <stdarg.h>
+
+void foo(int n, ...) {
+  NI64 k;
+  int i;
+  va_list argp;
+  va_start(argp, n);
+  for (i = 1; i <= n; i++) {
+    k = va_arg(argp, NI64);
+    printf("%lld\n", (long long)k);
+  }
+  va_end(argp);
+}
+""".}
+
+proc foo(x: cint) {.importc, varargs, nodecl.}
+
+proc main() =
+  const k = 17'i64
+  foo(6, k, k, k, k, k, k)
+main()