summary refs log tree commit diff
path: root/lisc/isel.c
diff options
context:
space:
mode:
Diffstat (limited to 'lisc/isel.c')
-rw-r--r--lisc/isel.c5
1 files changed, 4 insertions, 1 deletions
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;