~ 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