summaryrefslogtreecommitdiff
path: root/test/cminor/mainqsort.c
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-02-17 13:24:48 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-02-17 13:24:48 +0000
commit6f3a9afdda5c02dc84522fc8604addb7e5c8d7df (patch)
tree9b73d1072a2bd168ca04a7441a91d0b341ea0c0f /test/cminor/mainqsort.c
parentf6bdc196c093d413c900e38e894682b7b70d4483 (diff)
Moved test harness C files here
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1251 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'test/cminor/mainqsort.c')
-rw-r--r--test/cminor/mainqsort.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/cminor/mainqsort.c b/test/cminor/mainqsort.c
new file mode 100644
index 0000000..63a7614
--- /dev/null
+++ b/test/cminor/mainqsort.c
@@ -0,0 +1,36 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+extern void quicksort(int lo, int hi, long * data);
+
+int cmplong(const void * i, const void * j)
+{
+ long vi = *((long *) i);
+ long vj = *((long *) j);
+ if (vi == vj) return 0;
+ if (vi < vj) return -1;
+ return 1;
+}
+
+int main(int argc, char ** argv)
+{
+ int n, i;
+ long * a, * b;
+ int bench = 0;
+
+ if (argc >= 2) n = atoi(argv[1]); else n = 1000;
+ if (argc >= 3) bench = 1;
+ a = malloc(n * sizeof(long));
+ b = malloc(n * sizeof(long));
+ for (i = 0; i < n; i++) b[i] = a[i] = rand() & 0xFFFF;
+ quicksort(0, n - 1, a);
+ if (!bench) {
+ qsort(b, n, sizeof(long), cmplong);
+ for (i = 0; i < n; i++) {
+ if (a[i] != b[i]) { printf("Bug!\n"); return 2; }
+ }
+ printf("OK\n");
+ }
+ return 0;
+}