summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-01-10 16:40:24 +0100
committerAndy Wingo <wingo@pobox.com>2014-01-11 16:01:11 +0100
commitc79f873eb15d727986405563c64650e901119c70 (patch)
treed518d061387d5a63d2c262e51e533c9638b501ca
parentf409295892e8eb28e9df2e934badc1fcf4aa5e72 (diff)
downloadguile-c79f873eb15d727986405563c64650e901119c70.tar.gz
Fix allocate-slots bug
* module/language/cps/slot-allocation.scm (allocate-slots): Fix bug in allocate!, whereby a previously hinted allocation would not be added to the live set if a hint was not given later.
-rw-r--r--module/language/cps/slot-allocation.scm2
1 files changed, 1 insertions, 1 deletions
diff --git a/module/language/cps/slot-allocation.scm b/module/language/cps/slot-allocation.scm
index 9469f035e..245ee129a 100644
--- a/module/language/cps/slot-allocation.scm
+++ b/module/language/cps/slot-allocation.scm
@@ -278,8 +278,8 @@ are comparable with eqv?. A tmp slot may be used."
(define* (allocate! var-idx hint live)
(cond
((not (bitvector-ref needs-slotv var-idx)) live)
- ((and (not hint) (bitvector-ref needs-hintv var-idx)) live)
((vector-ref slots var-idx) => (cut add-live-slot <> live))
+ ((and (not hint) (bitvector-ref needs-hintv var-idx)) live)
(else
(let ((slot (compute-slot live hint)))
(bump-nlocals! (1+ slot))