simplify 8*x as well as x*8
This commit is contained in:
parent
0631bc4fec
commit
96f18be71d
1 changed files with 10 additions and 6 deletions
16
simpl.c
16
simpl.c
|
@ -65,7 +65,7 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
|
|||
|
||||
i = *pi;
|
||||
/* simplify more instructions here;
|
||||
* copy 0 into xor bit rotations,
|
||||
* copy 0 into xor, bit rotations,
|
||||
* etc. */
|
||||
switch (i->op) {
|
||||
case Oblit1:
|
||||
|
@ -80,8 +80,14 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
|
|||
}
|
||||
blit((i-1)->arg, rsval(i->arg[0]), fn);
|
||||
*pi = i-1;
|
||||
break;
|
||||
return;
|
||||
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 Ourem:
|
||||
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;
|
||||
}
|
||||
if (*new)
|
||||
emiti(*i);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Reference in a new issue