diff -ru compiler/analyser.c compilernew/analyser.c
--- compiler/analyser.c	2007-02-11 14:54:09.000000000 +0000
+++ compilernew/analyser.c	2007-02-11 01:17:24.000000000 +0000
@@ -417,7 +418,9 @@
     }
 }
 
-static int compare_amongvec(struct amongvec * p, struct amongvec * q) {
+static int compare_amongvec(const void *pv, const void *qv) {
+    const struct amongvec * p = (const struct amongvec*)pv;
+    const struct amongvec * q = (const struct amongvec*)qv;
     symbol * b_p = p->b; int p_size = p->size;
     symbol * b_q = q->b; int q_size = q->size;
     int smaller_size = p_size < q_size ? p_size : q_size;
@@ -476,7 +481,7 @@
     }
     unless (w1-v == p->number) { fprintf(stderr, "oh! %d %d\n", (int)(w1-v), p->number); exit(1); }
     if (backward) for (w0 = v; w0 < w1; w0++) reverse_b(w0->b);
-    sort(v, w1, sizeof(struct amongvec), (int (*)(void*, void*))compare_amongvec);
+    sort(v, w1, sizeof(struct amongvec), compare_amongvec);
 
     /* the following loop is O(n squared) */
     for (w0 = w1 - 1; w0 >= v; w0--) {
