The branch main has been updated by des:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=ef8f3e913156aa268e07ae1daa68e3bc3f1c4d29

commit ef8f3e913156aa268e07ae1daa68e3bc3f1c4d29
Author:     Dag-Erling Smørgrav <d...@freebsd.org>
AuthorDate: 2025-08-15 18:01:02 +0000
Commit:     Dag-Erling Smørgrav <d...@freebsd.org>
CommitDate: 2025-08-15 23:23:35 +0000

    libkern: Drop incorrect qsort optimization
    
    See 5205b32de3fb for details.
    
    PR:             287089
    MFC after:      1 week
    Reviewed by:    jlduran
    Differential Revision:  https://reviews.freebsd.org/D51919
---
 sys/libkern/qsort.c | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/sys/libkern/qsort.c b/sys/libkern/qsort.c
index 0255a3d64d76..342b1525dd8a 100644
--- a/sys/libkern/qsort.c
+++ b/sys/libkern/qsort.c
@@ -114,11 +114,10 @@ qsort(void *a, size_t n, size_t es, cmp_t *cmp)
        char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
        size_t d1, d2;
        int cmp_result;
-       int swaptype_long, swaptype_int, swap_cnt;
+       int swaptype_long, swaptype_int;
 
 loop:  SWAPINIT(long, a, es);
        SWAPINIT(int, a, es);
-       swap_cnt = 0;
        if (n < 7) {
                for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
                        for (pl = pm; 
@@ -147,7 +146,6 @@ loop:       SWAPINIT(long, a, es);
        for (;;) {
                while (pb <= pc && (cmp_result = CMP(thunk, pb, a)) <= 0) {
                        if (cmp_result == 0) {
-                               swap_cnt = 1;
                                swap(pa, pb);
                                pa += es;
                        }
@@ -155,7 +153,6 @@ loop:       SWAPINIT(long, a, es);
                }
                while (pb <= pc && (cmp_result = CMP(thunk, pc, a)) >= 0) {
                        if (cmp_result == 0) {
-                               swap_cnt = 1;
                                swap(pc, pd);
                                pd -= es;
                        }
@@ -164,18 +161,9 @@ loop:      SWAPINIT(long, a, es);
                if (pb > pc)
                        break;
                swap(pb, pc);
-               swap_cnt = 1;
                pb += es;
                pc -= es;
        }
-       if (swap_cnt == 0) {  /* Switch to insertion sort */
-               for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
-                       for (pl = pm; 
-                            pl > (char *)a && CMP(thunk, pl - es, pl) > 0;
-                            pl -= es)
-                               swap(pl, pl - es);
-               return;
-       }
 
        pn = (char *)a + n * es;
        d1 = MIN(pa - (char *)a, pb - pa);

Reply via email to