~ 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