summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/optimize.tl11
1 files changed, 11 insertions, 0 deletions
diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl
index a8e4ba9d..7a1a8bc0 100644
--- a/stdlib/optimize.tl
+++ b/stdlib/optimize.tl
@@ -609,6 +609,17 @@
^(,(car insns)
(jmp ,lab4)
,*(cddr insns)))
+ ((@(symbolp @lab1)
+ (mov (t @tn) (t 0))
+ @lab2
+ (ifq (t @tn) (t 0) @lab4)
+ @(symbolp @lab3)
+ (gcall (t @tn) . @grest)
+ . @rest)
+ ^(,lab2
+ (ifq (t ,tn) (t 0) ,lab4)
+ ,lab1
+ ,*(cddddr insns)))
(((mov (t @tx) (t @ty))
(if (t @ty) @lab2)
@(symbolp @lab1)