commit 2ec355df6adc457303fcf2076b559fefd80ee593
parent 7ee9970b32a07a62c625c6ae048366ed0c0b0ce4
Author: Quentin Carbonneaux <quentin@c9x.me>
Date: Mon, 12 Dec 2022 16:55:03 +0100
crash loads from uninitialized slots
Diffstat:
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/mem.c b/mem.c
@@ -304,12 +304,19 @@ coalesce(Fn *fn)
for (u=t->use; u<&t->use[t->nuse]; u++) {
assert(u->type == UIns);
i = u->u.ins;
- if (!req(i->to, R)) {
+ /* make loads crash */
+ if (isload(i->op))
+ i->arg[0] = CON_Z;
+ else if (i->op == Oargc)
+ i->arg[1] = CON_Z;
+ else if (!req(i->to, R)) {
assert(rtype(i->to) == RTmp);
vgrow(&stk, ++n);
stk[n-1] = i->to.val;
- } else
+ } else {
+ assert(!isarg(i->op));
*i = (Ins){.op = Onop};
+ }
}
}
vfree(stk);