simplify 8*x as well as x*8

This commit is contained in:
Quentin Carbonneaux 2024-06-18 16:59:42 +02:00
parent 0631bc4fec
commit 96f18be71d

16
simpl.c
View file

@ -65,7 +65,7 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
i = *pi; i = *pi;
/* simplify more instructions here; /* simplify more instructions here;
* copy 0 into xor bit rotations, * copy 0 into xor, bit rotations,
* etc. */ * etc. */
switch (i->op) { switch (i->op) {
case Oblit1: case Oblit1:
@ -80,8 +80,14 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
} }
blit((i-1)->arg, rsval(i->arg[0]), fn); blit((i-1)->arg, rsval(i->arg[0]), fn);
*pi = i-1; *pi = i-1;
break; return;
case Omul: case Omul:
if (rtype(i->arg[0]) == RCon) {
r = i->arg[0];
i->arg[0] = i->arg[1];
i->arg[1] = r;
}
/* fall through */
case Oudiv: case Oudiv:
case Ourem: case Ourem:
r = i->arg[1]; r = i->arg[1];
@ -103,12 +109,10 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
} }
} }
} }
/* fall through */
default:
if (*new)
emiti(*i);
break; break;
} }
if (*new)
emiti(*i);
} }
void void