From 2fc61ac9f73ec12abb3d47cbfc8da07e7a54acbf Mon Sep 17 00:00:00 2001 From: dzaima Date: Tue, 27 May 2025 19:01:47 +0300 Subject: [PATCH] =?UTF-8?q?better=20inds=E2=8A=8FhighrankTyped=20loops?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/select.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/builtins/select.c b/src/builtins/select.c index 16ba3ca5..e64a3722 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -394,16 +394,16 @@ B select_c2(B t, B w, B x) { CFRes f = cf_get(1, csz<=xn) { badw=c; goto bad1; } cf_call(f, rm->a, ri, xp, c*f.mul); ri+= f.mul; } // TODO something better - case el_i8: for (; ia, ri, xp, c*f.mul); ri+= f.mul; } - case el_i16: for (; ia, ri, xp, c*f.mul); ri+= f.mul; } - case el_i32: for (; ia, ri, xp, c*f.mul); ri+= f.mul; } + case el_bit: for (; i= xn) { goto bad1; } cf_call(f, rm->a, ri, xp, c*f.mul); ri+= f.mul; } break; // TODO something better + case el_i8: { i8* w0=wp; for (i8* wc=w0; wca, ri, xp, c*f.mul); ri+= f.mul; } } break; + case el_i16: { i16* w0=wp; for (i16* wc=w0; wca, ri, xp, c*f.mul); ri+= f.mul; } } break; + case el_i32: { i32* w0=wp; for (i32* wc=w0; wca, ri, xp, c*f.mul); ri+= f.mul; } } break; } assert(!isVal(xf)); @@ -412,7 +412,7 @@ B select_c2(B t, B w, B x) { MUTG_INIT(rm); for (; i < wia; i++) { B cw = GetU(w, i); // assumed number from previous squeeze - if (!q_i64(cw)) { bad_cw: badw=o2fG(cw); goto bad1; } + if (!q_i64(cw)) { bad_cw: goto bad1; } usz c = WRAP(o2i64G(cw), xn, goto bad_cw; ); mut_copyG(rm, i*csz, x, csz*c, csz); } @@ -422,7 +422,7 @@ B select_c2(B t, B w, B x) { bad1:; mut_pfree(rm, i*csz); - if (!q_fi64(badw)) expI_f64(badw); + f64 badw = o2i64(IGetU(w,i)); thrF("๐•จโŠ๐•ฉ: Indexing out-of-bounds (%fโˆŠ๐•จ, %sโ‰กโ‰ ๐•ฉ)", badw, xn); }