Index: compiler/analyser.c
===================================================================
--- compiler/analyser.c	(revision 7628)
+++ compiler/analyser.c	(working copy)
@@ -478,7 +478,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), compare_amongvec);
+    qsort(v, w1 - v, sizeof(struct amongvec), compare_amongvec);
 
     /* the following loop is O(n squared) */
     for (w0 = w1 - 1; w0 >= v; w0--) {
Index: compiler/header.h
===================================================================
--- compiler/header.h	(revision 7626)
+++ compiler/header.h	(working copy)
@@ -45,7 +45,10 @@
 extern int get_utf8(const symbol * p, int * slot);
 extern int put_utf8(int ch, symbol * p);
 
-extern void sort(void * p, void * p_end, int unit, int (*f)(void *, void *));
+/* Use qsort instead of custom implementation of mergesort to reduce the
+ * dependencies.  The mergesort isn't detectably faster anyway.
+ */
+/* extern void sort(void * p, void * p_end, int unit, int (*f)(void *, void *)); */
 
 struct m_pair {
 

