fix gcc warnings about pointer casts in 32-bit builds

This commit is contained in:
dzaima 2022-10-07 12:42:13 +03:00
parent abcb575a53
commit 7bda795365
3 changed files with 13 additions and 13 deletions

View File

@ -861,7 +861,7 @@ void g_pst(void) { vm_pstLive(); fflush(stdout); fflush(stderr); }
if (!isVal(x)) return x;
VALIDATEP(v(x));
if(isArr(x)!=TI(x,isArr) && v(x)->type!=t_freed && v(x)->type!=t_harrPartial && !ignore_bad_tag) {
fprintf(stderr, "bad array tag/type: type=%d, obj=%p\n", v(x)->type, (void*)x.u);
fprintf(stderr, "bad array tag/type: type=%d, obj=%p\n", v(x)->type, TOPTR(void, x.u));
PRINT_ID(v(x));
fprint(stderr, x);
err("\n");

View File

@ -368,8 +368,8 @@ extern B thrownMsg;
void freeThrown(void);
#define c(T,X) ((T*)((X).u&0xFFFFFFFFFFFFull))
#define TOPTR(T,X) ((T*)(uintptr_t)(X))
#define c(T,X) TOPTR(T, (X).u&0xFFFFFFFFFFFFull)
#define v(X) c(Value, X)
#define a(X) c(Arr , X)

View File

@ -781,9 +781,9 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
}
break;
}
case DFND0: { GS_UPD;POS_UPD; ADD(evalFunBlock((Block*)L64, sc)); break; }
case DFND1: { GS_UPD;POS_UPD; ADD(m_md1Block ((Block*)L64, sc)); break; }
case DFND2: { GS_UPD;POS_UPD; ADD(m_md2Block ((Block*)L64, sc)); break; }
case DFND0: { GS_UPD;POS_UPD; ADD(evalFunBlock(TOPTR(Block,L64), sc)); break; }
case DFND1: { GS_UPD;POS_UPD; ADD(m_md1Block (TOPTR(Block,L64), sc)); break; }
case DFND2: { GS_UPD;POS_UPD; ADD(m_md2Block (TOPTR(Block,L64), sc)); break; }
case MD1C: { P(f)P(m) GS_UPD;POS_UPD; ADD(m1_d (m,f )); break; }
case MD2C: { P(f)P(m)P(g) GS_UPD;POS_UPD; ADD(m2_d (m,f,g)); break; }
@ -849,20 +849,20 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
case SETH1:{ P(s) P(x) GS_UPD; POS_UPD; u64 v1 = L64;
bool ok = v_seth(pscs, s, x); dec(x); dec(s);
if (!ok) { return gotoNextBody(bl, sc, (Body*)v1); }
if (!ok) { return gotoNextBody(bl, sc, TOPTR(Body, v1)); }
break;
}
case SETH2:{ P(s) P(x) GS_UPD; POS_UPD; u64 v1 = L64; u64 v2 = L64;
bool ok = v_seth(pscs, s, x); dec(x); dec(s);
if (!ok) { return gotoNextBody(bl, sc, (Body*)(q_N(sc->vars[2])? v1 : v2)); }
if (!ok) { return gotoNextBody(bl, sc, TOPTR(Body, q_N(sc->vars[2])? v1 : v2)); }
break;
}
case PRED1:{ P(x) GS_UPD; POS_UPD; u64 v1 = L64;
if (!o2b(x)) { return gotoNextBody(bl, sc, (Body*)v1); }
if (!o2b(x)) { return gotoNextBody(bl, sc, TOPTR(Body, v1)); }
break;
}
case PRED2:{ P(x) GS_UPD; POS_UPD; u64 v1 = L64; u64 v2 = L64;
if (!o2b(x)) { return gotoNextBody(bl, sc, (Body*)(q_N(sc->vars[2])? v1 : v2)); }
if (!o2b(x)) { return gotoNextBody(bl, sc, TOPTR(Body, q_N(sc->vars[2])? v1 : v2)); }
break;
}
@ -1374,7 +1374,7 @@ NOINLINE void vm_pst(Env* s, Env* e) { // e not included
i = 10;
}
Comp* comp = c->sc->body->bl->comp;
i32 bcPos = c->pos&1? ((u32)c->pos)>>1 : BCPOS(c->sc->body, (u32*)c->pos);
i32 bcPos = c->pos&1? ((u32)c->pos)>>1 : BCPOS(c->sc->body, TOPTR(u32, c->pos));
vm_printPos(comp, bcPos, i);
i--;
}
@ -1407,7 +1407,7 @@ void profiler_sigHandler(int x) {
if (envCurr<envStart) return;
Env e = *envCurr;
Comp* comp = e.sc->body->bl->comp;
i32 bcPos = e.pos&1? ((u32)e.pos)>>1 : BCPOS(e.sc->body, (u32*)e.pos);
i32 bcPos = e.pos&1? ((u32)e.pos)>>1 : BCPOS(e.sc->body, TOPTR(u32, e.pos));
*profiler_buf_c = (Profiler_ent){.comp = ptr_inc(comp), .bcPos = bcPos};
profiler_buf_c = bn;
@ -1572,7 +1572,7 @@ void unwindEnv(Env* envNew) {
while (envCurr!=envNew) {
// if ((envCurr->pos&1) == 0) printf("unwinding %ld\n", (u32*)envCurr->pos - (u32*)envCurr->sc->body->bl->bc);
// else printf("not unwinding %ld", envCurr->pos>>1);
if ((envCurr->pos&1) == 0) envCurr->pos = (BCPOS(envCurr->sc->body, (u32*)envCurr->pos)<<1) | 1;
if ((envCurr->pos&1) == 0) envCurr->pos = (BCPOS(envCurr->sc->body, TOPTR(u32, envCurr->pos))<<1) | 1;
envCurr--;
}
}