From 621463216fa7df93c9a75da864759a8f65816e50 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 3 Apr 2015 16:54:26 -0400 Subject: [PATCH] Do not keep global just because it refers to itself --- trans.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/trans.scm b/trans.scm index 79d9063c..bb6e1b59 100644 --- a/trans.scm +++ b/trans.scm @@ -1140,7 +1140,6 @@ ;; Many improvements can be made, including: ;; ;; TODO: remove unused locals -;; TODO: do not keep defines that call themselves recursively (define (filter-unused-variables asts) (define (do-filter code) (let ((all-fv (apply ;; More efficient way to do this? @@ -1148,7 +1147,12 @@ (map (lambda (ast) (if (define? ast) - (free-vars (define->exp ast)) + (let ((var (define->var ast))) + ;; Do not keep global that refers to itself + (filter + (lambda (v) + (not (equal? v var))) + (free-vars (define->exp ast)))) (free-vars ast))) code)))) (filter