diff options
author | Andy Wingo <wingo@pobox.com> | 2015-10-28 13:33:37 +0000 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-10-28 13:33:37 +0000 |
commit | dd77a818ba6aefc98a78d03dec61454546992671 (patch) | |
tree | 8b53f3ccc315760370cf352c4282b4462b0635cc | |
parent | 95855087ec3d04ec0980cc2cdcc283c4c7bc20b0 (diff) | |
download | guile-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.scm | 4 |
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 |