From f7167c9ec81a0e8cd99f6692fa60ae1d476c9758 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 20 Dec 2025 07:54:46 +0100 Subject: x86-64: peephole optimization for 3-address shift -> lea --- x86_64/isel.c | 1 + 1 file changed, 1 insertion(+) (limited to 'x86_64/isel.c') diff --git a/x86_64/isel.c b/x86_64/isel.c index 19692ed..2b087cd 100644 --- a/x86_64/isel.c +++ b/x86_64/isel.c @@ -507,6 +507,7 @@ sel(struct function *fn, struct instr *ins, struct block *blk, int *curi) ALU: if (!(op == Oadd && kisint(ins->cls))) /* 3-address add is lea */ if (!(op == Omul && kisint(ins->cls) && isimm32(ins->r))) /* for (I)MUL r,r/m,imm */ + if (!(op == Oshl && ins->r.t == RICON && ins->r.i <= 3)) /* can be lea */ ins->inplace = 1; if (iscon(ins->l)) { fixarg(&ins->l, ins, blk, curi); -- cgit v1.2.3