diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index cf1f2a6a..b547916f 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -864,6 +864,10 @@ (with-var param (lambda (var) ;(trace:error `(DEBUG ,param ,(adbv:ref-by var))) (and + ;; If param is referenced in a loop (but defined outside) + ;; do not inline function into the loop + (or (not (adbv:ref-in-loop? var)) + (adbv:def-in-loop? var)) ;; If param is never referenced, then prim is being ;; called for side effects, possibly on a global (not (null? (adbv:ref-by var)))