aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64
diff options
context:
space:
mode:
Diffstat (limited to 'amd64')
-rw-r--r--amd64/emit.c3
-rw-r--r--amd64/isel.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/amd64/emit.c b/amd64/emit.c
index c7c6258..21a59b7 100644
--- a/amd64/emit.c
+++ b/amd64/emit.c
@@ -529,10 +529,11 @@ Xjcc(uchar **pcode, enum cc cc, struct block *dst)
}
static void
-Xsetcc(uchar **pcode, enum cc cc, int reg)
+Xsetcc(uchar **pcode, enum cc cc, enum reg reg)
{
int rex = 0;
assert(in_range(cc, 0x0, 0xF));
+ assert(in_range(reg, RAX, R15));
if (in_range(reg, RSP, RDI)) rex = 0x40;
rex |= (reg >> 3); /* REX.B */
diff --git a/amd64/isel.c b/amd64/isel.c
index a613f53..10ff5ea 100644
--- a/amd64/isel.c
+++ b/amd64/isel.c
@@ -355,7 +355,7 @@ amd64_isel(struct function *fn)
for (i = 0; i < blk->ins.n; ++i) {
struct instr *ins = &instrtab[blk->ins.p[i]];
sel(fn, ins, blk, &i);
- if (ins->op < arraylength(opflags) && kisint(ins->cls)) {
+ if (ins->op < arraylength(opflags) && kisint(insrescls(*ins))) {
if (opflags[ins->op] & ZF) iflagsrc = ins - instrtab;
else if (opflags[ins->op] & CLOBF) iflagsrc = -1;
}