From bccfc34ca3f58a2e6706fa37bc0729a56f35bc1f Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Sat, 15 Aug 2015 20:49:20 -0400 Subject: make sure eflags-writing do not disappear This is a hack implementation, ideally I would like something cleaner. The problem is that regalloc thinks an instruction is dead code because it's not aware that it writes to eflags. --- lisc/isel.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lisc/isel.c') diff --git a/lisc/isel.c b/lisc/isel.c index 6f2147f..97a0124 100644 --- a/lisc/isel.c +++ b/lisc/isel.c @@ -318,8 +318,11 @@ seljmp(Blk *b, Fn *fn) selcmp(fi->arg, fn); *fi = (Ins){ONop, R, {R, R}}; } - } else + } else { + if (fn->tmp[r.val].nuse == 1) + emit(OCopy, R, r, R); b->jmp.type = JXJc + Cne; + } } else { selcmp((Ref[2]){r, CON_Z}, fn); b->jmp.type = JXJc + Cne; -- cgit 1.4.1