From be25f055f0a229252b854c5aae5922dd885a9136 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 24 May 2018 16:37:04 -0400 Subject: [PATCH] If param is referenced in a loop (but defined outside) do not inline function into the loop --- scheme/cyclone/cps-optimizations.sld | 4 ++++ 1 file changed, 4 insertions(+) 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)))