~ chicken-core (chicken-5) fc329c3b28dfaffcd8a288391b7eff1839ad8149


commit fc329c3b28dfaffcd8a288391b7eff1839ad8149
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Sun Mar 6 17:37:13 2016 +1300
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Tue Mar 8 19:37:42 2016 +0100

    Preserve destination name when inserting C_DEBUG_GLOBAL_ASSIGN events
    
    Using a gensym for the let binding inserted by C_DEBUG_GLOBAL_ASSIGN
    events causes a different "dest" to be used when walking the assigned
    value, which (for procedures) means that the value's accompanying
    C_DEBUG_ENTRY event will use that temporary name rather than the
    procedure's real, assigned one.
    
    Signed-off-by: Peter Bex <peter@more-magic.net>

diff --git a/compiler.scm b/compiler.scm
index c91e21c2..80928f25 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -981,11 +981,10 @@
 				      (mark-variable var '##compiler#always-bound-to-procedure)
 				      (mark-variable var '##compiler#always-bound))
 				    (when emit-debug-info
-				      (let ((tmp (gensym)))
-					(set! val
-					  `(let ((,tmp ,val))
-					     (##core#debug-event "C_DEBUG_GLOBAL_ASSIGN" ',var)
-					     ,tmp)))))
+				      (set! val
+					`(let ((,var ,val))
+					   (##core#debug-event "C_DEBUG_GLOBAL_ASSIGN" ',var)
+					   ,var))))
 				  (cond ((##sys#macro? var)
 					 (warning 
 					  (sprintf "assigned global variable `~S' is syntax ~A"
Trap