~ chicken-core (chicken-5) 91fb64afba890b27c981e94c56496b8c9d3b040b
commit 91fb64afba890b27c981e94c56496b8c9d3b040b Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Mar 1 15:32:28 2011 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Mar 1 15:32:28 2011 +0100 dropped global assignment bug reported by syn possibly fixed diff --git a/optimizer.scm b/optimizer.scm index 74c10178..68c2b0df 100644 --- a/optimizer.scm +++ b/optimizer.scm @@ -67,7 +67,7 @@ [(##core#variable) (let ((var (first params))) (when (and (not (memq var e)) - (not (memq var safe))) + (not (memq var unsafe))) (set! unsafe (cons var unsafe)) ) (set! previous (remove (lambda (p) (eq? (car p) var)) previous)))] @@ -77,12 +77,12 @@ (scan-each (cdr subs) e)] [(let) - (scan (first subs) e) - (scan (second subs) (append params e)) ] + (scan-each (butlast subs) e) + (scan (last subs) (append params e)) ] - [(lambda ##core#lambda ##core#callunit) #f] + [(lambda ##core#lambda) #f] - [(##core#call) (touch)] + [(##core#call ##core#callunit) (touch)] [(set!) (let ((var (first params)) @@ -94,6 +94,7 @@ #;(##sys#notice (sprintf "dropping assignment of unused value to global variable `~s'" var)) + (debugging 'o "dropping redundant toplevel assignment" var) (copy-node! (make-node '##core#undefined '() '()) p))Trap