diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/optimize.tl | 14 |
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 |