From 408da790153b2c9620df5169e976e05d3647b995 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 2 Apr 2014 15:48:13 +0200 Subject: [PATCH] compute-max-label-and-var takes letrec vars into account. * module/language/cps.scm (compute-max-label-and-var): Fix to take letrec vars into account. --- module/language/cps.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/module/language/cps.scm b/module/language/cps.scm index c1bb30478..90f38a4ca 100644 --- a/module/language/cps.scm +++ b/module/language/cps.scm @@ -508,8 +508,13 @@ (lambda (label cont max-label max-var) (values (max label max-label) (match cont - (($ $kargs names vars) - (fold max max-var vars)) + (($ $kargs names vars body) + (let lp ((body body) (max-var (fold max max-var vars))) + (match body + (($ $letk conts body) (lp body max-var)) + (($ $letrec names vars funs body) + (lp body (fold max max-var vars))) + (_ max-var)))) (($ $kentry self) (max self max-var)) (_ max-var)))) -- 2.20.1