From 962ad175aee634274b408ead38b13e6bc90e2fe7 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 17 Jun 2023 23:26:45 +0200 Subject: basic ELF output --- amd64/isel.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'amd64/isel.c') diff --git a/amd64/isel.c b/amd64/isel.c index 7725013..0205313 100644 --- a/amd64/isel.c +++ b/amd64/isel.c @@ -202,7 +202,15 @@ sel(struct function *fn, struct instr *ins, struct block *blk, int *curi) } goto ALU; case Oadd: - if (ins->l.bits == mkref(RICON, 1).bits) { + if (kisint(ins->cls) && (addarg4addrp(ins->l) || addarg4addrp(ins->r))) { + temp.op = Ocopy; + temp.cls = ins->cls; + temp.l = mkref(RTMP, ins - instrtab); + if (fuseaddr(fn, &temp.l)) { + *ins = temp; + break; + } + } else if (ins->l.bits == mkref(RICON, 1).bits) { /* add 1,x -> inc x */ ins->op = op = Oxinc; ins->l = ins->r; @@ -213,14 +221,6 @@ sel(struct function *fn, struct instr *ins, struct block *blk, int *curi) ins->op = op = Oxinc; ins->r = NOREF; goto ALU; - } else if (kisint(ins->cls) && (addarg4addrp(ins->l) || addarg4addrp(ins->r))) { - temp.op = Ocopy; - temp.cls = ins->cls; - temp.l = mkref(RTMP, ins - instrtab); - if (fuseaddr(fn, &temp.l)) { - *ins = temp; - break; - } } /* fallthru */ case Omul: case Oumul: -- cgit v1.2.3