From 2ec355df6adc457303fcf2076b559fefd80ee593 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Mon, 12 Dec 2022 16:55:03 +0100 Subject: crash loads from uninitialized slots --- mem.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mem.c b/mem.c index dae9b55..fc3269c 100644 --- 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); -- cgit 1.4.1