From 42c7551e508e45cd4346e67898c374b910ee1407 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 20 Jun 2023 19:52:35 +0200 Subject: improve codegen for div a little (bikeshedding) --- regalloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'regalloc.c') diff --git a/regalloc.c b/regalloc.c index 8f31b05..a30ebe5 100644 --- a/regalloc.c +++ b/regalloc.c @@ -238,7 +238,8 @@ use(struct rega *ra, struct block *blk, int curi, enum op op, int hint, union re assert(ins->op != Ocall); if (ins->r.t == RREG && ins->inplace) excl |= 1ull<r.i; - if (hint == -1 && ins->op == Ocopy && ins->l.t == RREG) /* for '%x = copy Rx', hint %x to use Rx */ + if ((hint == -1 || ra->regs[hint].t) && ins->op == Ocopy && ins->l.t == RREG) + /* for '%x = copy Rx', hint %x to use Rx */ hint = ins->l.i; if (hint != -1 && !(excl >> hint & 1) && !ra->regs[hint].t) { take(ra, hint, *ref); -- cgit v1.2.3