diff --git a/maze-get-set-root.scm b/maze-get-set-root.scm index 988f1afe..2538b532 100644 --- a/maze-get-set-root.scm +++ b/maze-get-set-root.scm @@ -17,4 +17,10 @@ r)))));; Then return r. (write - (get-set-root '())) + (get-set-root '( + (a . 1) + (b . 2) + (c . 3) + (d . 4) + (e . 5) + ))) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index 0bbeab0c..85db59b1 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -1477,7 +1477,14 @@ (with-var (car (lambda-formals->list fn)) (lambda (var) - (zero? (adbv:ref-count var))))) + (zero? (adbv:ref-count var)))) + ;; Non-CPS args + (every + (lambda (x) + (or (not (pair? x)) ;; Should never happen + (and (prim-call? x) + (not (prim:cont? (car x)))))) + args)) `(Cyc-seq ,@args ,@(map cc (lambda->exp fn))))