summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2015-10-28 13:33:37 +0000
committerAndy Wingo <wingo@pobox.com>2015-10-28 13:33:37 +0000
commitdd77a818ba6aefc98a78d03dec61454546992671 (patch)
tree8b53f3ccc315760370cf352c4282b4462b0635cc
parent95855087ec3d04ec0980cc2cdcc283c4c7bc20b0 (diff)
downloadguile-dd77a818ba6aefc98a78d03dec61454546992671.tar.gz
Treat tail $values as generating lazy allocations
* module/language/cps/slot-allocation.scm (compute-lazy-vars): Returning values in tail position also generates lazy vars.
-rw-r--r--module/language/cps/slot-allocation.scm4
1 files changed, 4 insertions, 0 deletions
diff --git a/module/language/cps/slot-allocation.scm b/module/language/cps/slot-allocation.scm
index b3068985c..1e349eea2 100644
--- a/module/language/cps/slot-allocation.scm
+++ b/module/language/cps/slot-allocation.scm
@@ -376,6 +376,10 @@ is an active call."
(($ $kargs _ _ ($ $continue _ _ ($ $callk _ proc args)))
(intset-subtract (intset-add (list->intset args) proc)
(intmap-ref live-out label)))
+ (($ $kargs _ _ ($ $continue k _($ $values args)))
+ (match (intmap-ref cps k)
+ (($ $ktail) (list->intset args))
+ (_ #f)))
(_ #f)))
cps))
(kills (intmap-map