See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118779 --- src/package.d.orig 2024-12-28 00:47:59.000000000 -0700 +++ src/package.d 2025-02-07 12:00:00.646094825 -0700 @@ -188,12 +188,12 @@ local maygc object rehash_symtab (object first process the symbols, that sit in lists (maybe Conses become free): */ { - var gcv_object_t* offset = 0; /* offset = sizeof(gcv_object_t)*index */ + var aint offset = 0; /* offset = sizeof(gcv_object_t)*index */ var uintC count = oldsize; do { var object oldentry = /* entry with number index in oldtable */ *(gcv_object_t*)(pointerplus(&TheSvector(STACK_2)->data[0], - (aint)offset)); + offset)); if (consp(oldentry)) /* this time process only non-empty symbol-lists */ do { pushSTACK(Cdr(oldentry)); /* save rest-list */ @@ -205,22 +205,22 @@ local maygc object rehash_symtab (object newinsert(Car(oldentry),newsize); oldentry = popSTACK(); /* rest-list */ } while (consp(oldentry)); - offset++; + offset += sizeof(gcv_object_t); } while (--count); } { /* then process symbols, that sit there collision-free: */ - var gcv_object_t* offset = 0; /* offset = sizeof(gcv_object_t)*index */ + var aint offset = 0; /* offset = sizeof(gcv_object_t)*index */ var uintC count; dotimespC(count,oldsize, { var object oldentry = /* entry with number index in oldtable */ *(gcv_object_t*)(pointerplus(&TheSvector(STACK_2)->data[0], - (aint)offset)); + offset)); if (!listp(oldentry)) { /* this time process only symbols /= NIL */ pushSTACK(oldentry); /* dummy, so that the stack is fine */ newinsert(oldentry,newsize); /* enter into the new table */ skipSTACK(1); } - offset++; + offset += sizeof(gcv_object_t); }); } /* stack layout: tab, oldtable, free-conses, newtable. */