From 8d3273a5664e660fa18620a4857d85226632db9a Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 7 Oct 2025 20:24:13 +0200 Subject: rega: don't make fixed intervals for globally live regs --- regalloc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'regalloc.c') diff --git a/regalloc.c b/regalloc.c index 68d6592..683e591 100644 --- a/regalloc.c +++ b/regalloc.c @@ -528,7 +528,9 @@ priliveset(struct bitset *s, size_t siz) static void usereg(struct rega *ra, int reg, struct block *blk, int pos) { - struct fixinterval *fxit = alloc(ra->arena, sizeof *fxit, 0); + struct fixinterval *fxit; + if (rstest(mctarg->rglob, reg)) return; /* regalloc never allocates globally live regs, so don't need intervals for those */ + fxit = alloc(ra->arena, sizeof *fxit, 0); fxit->next = ra->intervals.fixed; fxit->range = (struct range) {blk->inumstart, pos}; fxit->rs = 1<rglob, reg)) return; for (struct fixinterval *fxit = ra->intervals.fixed; fxit; fxit = fxit->next) { if (fxit->rs == 1<range.from <= pos); -- cgit v1.2.3