summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/txr/stdlib/optimize.tl27
1 files changed, 20 insertions, 7 deletions
diff --git a/share/txr/stdlib/optimize.tl b/share/txr/stdlib/optimize.tl
index 78fab4b2..537bceed 100644
--- a/share/txr/stdlib/optimize.tl
+++ b/share/txr/stdlib/optimize.tl
@@ -49,30 +49,43 @@
(((jmp @jlabel) . @rest)
(let ((jinsns [bb.hash jlabel]))
(match-case jinsns
- ((@(op eq jlabel) (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil)
+ ((@(op eq jlabel)
+ (jmp @(require @jjlabel (neq jjlabel jlabel)))
+ . @nil)
^((jmp ,jjlabel) ,*rest))
(@jelse insns))))
(((if @reg @jlabel) . @rest)
(let ((jinsns [bb.hash jlabel]))
(match-case jinsns
- ((@(op eq jlabel) (if @(op eq reg) @(require @jjlabel (neq jjlabel jlabel))) . @nil)
+ ((@(op eq jlabel)
+ (if @(op eq reg)
+ @(require @jjlabel (neq jjlabel jlabel)))
+ . @nil)
^((if ,reg ,jjlabel) ,*rest))
- ((@(op eq jlabel) (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil)
+ ((@(op eq jlabel)
+ (jmp @(require @jjlabel (neq jjlabel jlabel)))
+ . @nil)
^((if ,reg ,jjlabel) ,*rest))
(@jelse insns))))
(((ifq @reg @creg @jlabel) . @rest)
(let ((jinsns [bb.hash jlabel]))
(match-case jinsns
- ((@(op eq jlabel) (ifq @(op eq reg) @(op eq creg)
- @(require @jjlabel (neq jjlabel jlabel))) . @nil)
+ ((@(op eq jlabel)
+ (ifq @(op eq reg) @(op eq creg)
+ @(require @jjlabel (neq jjlabel jlabel)))
+ . @nil)
^((ifq ,reg ,creg ,jjlabel) ,*rest))
- ((@(op eq jlabel) (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil)
+ ((@(op eq jlabel)
+ (jmp @(require @jjlabel (neq jjlabel jlabel)))
+ . @nil)
^((ifq ,reg ,creg ,jjlabel) ,*rest))
(@jelse insns))))
(((close @reg @nargs @jlabel . @cargs) . @rest)
(let ((jinsns [bb.hash jlabel]))
(match-case jinsns
- ((@(op eq jlabel) (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil)
+ ((@(op eq jlabel)
+ (jmp @(require @jjlabel (neq jjlabel jlabel)))
+ . @nil)
^((close ,reg ,nargs ,jjlabel ,*cargs) ,*rest))
(@jelse insns))))
(@else insns)))