From ce1dbe8c1bc3f1d37978d2ca1d5949b03514a5e3 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 2 Apr 2014 15:41:14 +0200 Subject: [PATCH] Fix DCE for refactor-introduced borkage * module/language/cps/dce.scm ($fun-data, compute-live-code) (process-eliminations): Fix clownshoes regarding fun-data field names and order. --- module/language/cps/dce.scm | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/module/language/cps/dce.scm b/module/language/cps/dce.scm index eae551aab..0aa08f77c 100644 --- a/module/language/cps/dce.scm +++ b/module/language/cps/dce.scm @@ -43,11 +43,10 @@ #:export (eliminate-dead-code)) (define-record-type $fun-data - (make-fun-data min-label effects conts live-conts defs) + (make-fun-data min-label effects live-conts defs) fun-data? (min-label fun-data-min-label) (effects fun-data-effects) - (conts fun-data-conts) (live-conts fun-data-live-conts) (defs fun-data-defs)) @@ -100,14 +99,14 @@ (effects (compute-effects dfg min-label label-count)) (live-conts (make-bitvector label-count #f)) (defs (compute-defs dfg min-label label-count)) - (fun-data (make-fun-data min-label label-count - effects live-conts defs))) + (fun-data (make-fun-data + min-label effects live-conts defs))) (hashq-set! fun-data-table fun fun-data) (set! changed? #t) fun-data))))) (define (visit-fun fun) (match (ensure-fun-data fun) - (($ $fun-data min-label label-count effects live-conts defs) + (($ $fun-data min-label effects live-conts defs) (define (visit-grey-exp n) (let ((defs (vector-ref defs n))) (cond @@ -118,7 +117,7 @@ (else (or-map value-live? defs))))) (define (idx->label idx) (+ idx min-label)) - (let lp ((n (1- label-count))) + (let lp ((n (1- (vector-length effects)))) (unless (< n 0) (let ((cont (lookup-cont (idx->label n) dfg))) (match cont @@ -191,7 +190,7 @@ ($continue k #f ($values live))))))) (define (visit-fun fun) (match (hashq-ref fun-data-table fun) - (($ $fun-data min-label label-count effects live-conts defs) + (($ $fun-data min-label effects live-conts defs) (define (label->idx label) (- label min-label)) (define (visit-cont cont) (match (visit-cont* cont)