diff options
| author | 2023-06-30 18:04:58 +0200 | |
|---|---|---|
| committer | 2023-06-30 18:04:58 +0200 | |
| commit | 50d9dfe5a55d0a3a2fd21dfb961d347be8a3a854 (patch) | |
| tree | 361d910a1cba82625df34daf2a3e32f874390fe7 /amd64/isel.c | |
| parent | f453b313f62ba42d748f00628be7b3750c797c86 (diff) | |
misc bugfixs
Diffstat (limited to 'amd64/isel.c')
| -rw-r--r-- | amd64/isel.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/amd64/isel.c b/amd64/isel.c index 911bb2e..da5a128 100644 --- a/amd64/isel.c +++ b/amd64/isel.c @@ -397,10 +397,8 @@ seljmp(struct function *fn, struct block *blk) c = insertinstr(blk, blk->ins.n, mkinstr(Ocopy, cls, c)); sel(fn, &instrtab[c.i], blk, &curi); } - if (iflagsrc == c.i) { - if (!oiscmp(instrtab[c.i].op)) { - blk->jmp.arg[0] = NOREF; /* implicit by zero flag */ - } + if (iflagsrc == c.i /* test cmp */ + && (oiscmp(instrtab[c.i].op) || instrtab[c.i].op == Oand || instrtab[c.i].op == Osub)) { instrtab[c.i].keep = 1; } else { if (!(opflags[instrtab[c.i].op] & ZF) || c.i != blk->ins.p[blk->ins.n - 1]) { |