diff options
Diffstat (limited to 'amd64')
| -rw-r--r-- | amd64/emit.c | 3 | ||||
| -rw-r--r-- | amd64/isel.c | 2 |
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; } |