summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/optimize.tl6
1 files changed, 6 insertions, 0 deletions
diff --git a/share/txr/stdlib/optimize.tl b/share/txr/stdlib/optimize.tl
index 813264df..411af8d9 100644
--- a/share/txr/stdlib/optimize.tl
+++ b/share/txr/stdlib/optimize.tl
@@ -385,6 +385,12 @@
^((if (t ,reg) ,xbl.label)))
(t insns))))
(@jelse insns))))
+ (@(require ((if @(as reg (d @dn)) @jlabel) . @nil)
+ (not (memqual reg bb.lt-dregs)))
+ nil)
+ (@(require ((ifq @(as reg (d @dn)) (t 0) @jlabel) . @nil)
+ (not (memqual reg bb.lt-dregs)))
+ ^((jmp ,jlabel)))
(@else insns)))
(defmeth basic-blocks peephole (bb)