summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/optimize.tl14
1 files changed, 6 insertions, 8 deletions
diff --git a/share/txr/stdlib/optimize.tl b/share/txr/stdlib/optimize.tl
index a8a329de..4b446baf 100644
--- a/share/txr/stdlib/optimize.tl
+++ b/share/txr/stdlib/optimize.tl
@@ -66,14 +66,12 @@
^((jmp ,jjlabel) ,*rest))
(@jelse insns))))
(((if @reg @jlabel0)
- (jmp @jlabel1) . @rest)
- (let ((jinsns [bb.hash jlabel1]))
- (if-match (@(op eq jlabel1)
- (if @(op eq reg) @nil)
- (jmp @jlabel3) . @nil)
- jinsns
- ^(,(car insns) (jmp ,jlabel3) ,*rest)
- insns)))
+ (jmp @(with @jlabel1
+ @(hash (@jlabel1 (@jlabel1
+ (if @reg @nil)
+ (jmp @jlabel3) . @nil)))
+ bb.hash)) . @rest)
+ ^(,(car insns) (jmp ,jlabel3) ,*rest))
(((if @reg @jlabel) . @rest)
(let ((jinsns [bb.hash jlabel]))
(match-case jinsns