From c024799bd6c38d79d34a0b103d1b26f21b0345b1 Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 11 Jan 2026 11:44:22 +0100 Subject: simpl: fix simplifying known cond branches --- ir/simpl.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/ir/simpl.c b/ir/simpl.c index 2b3870c..c52f809 100644 --- a/ir/simpl.c +++ b/ir/simpl.c @@ -260,22 +260,17 @@ simpl(struct function *fn) inschange += ins(&instrtab[blk->ins.p[curi]], blk, &curi); } -#if 0 // FIXME if (blk->s2 && isintcon(blk->jmp.arg[0])) { /* simplify known conditional branch */ struct block *s = intconval(blk->jmp.arg[0]) ? blk->s1 : blk->s2; - delpred(blk->s2, blk); - if (blk->s2->npred == 0) { - freeblk(fn, blk->s2); - } + delpred(s == blk->s1 ? blk->s2 : blk->s1, blk); blk->s1 = s, blk->s2 = NULL; blk->jmp.arg[0] = NOREF; - while (blk->s1 && !blk->s2 && blk->s1->npred == 1 && blk->s1->phi.n == 0) { + if (blk->s1 && !blk->s2 && blk->s1->npred == 1 && blk->s1->phi.n == 0) { mergeblks(fn, blk, blk->s1); + goto DoIns; } - goto DoIns; } -#endif /* thread jumps.. */ if (!blk->phi.n && !blk->ins.n) { -- cgit v1.2.3