summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/optimize.tl6
1 files changed, 4 insertions, 2 deletions
diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl
index 6ba0685e..5002b1fd 100644
--- a/stdlib/optimize.tl
+++ b/stdlib/optimize.tl
@@ -528,12 +528,14 @@
(cons (car insns) ren))
(t insns))))
;; constant folding
- (@(require ((gcall @tgt @idx . @(all (d @dn))) . @rest)
+ (@(require ((gcall @tgt @idx . @(all @(or (d @dn)
+ @(with (t 0) dn nil))))
+ . @rest)
[%const-foldable% [bb.symvec idx]])
(let* ((co bb.compiler)
(dvec co.(get-datavec))
(fun [bb.symvec idx])
- (args [mapcar dvec dn])
+ (args (mapcar [iffi true dvec] dn))
(val (apply fun args))
(dreg co.(get-dreg val)))
^((mov ,tgt ,dreg) ,*rest)))