Inlining introduces renamed variables which are not yet
recorded in the analysis-database, and this could result in
certain assignments to variables in the bodies of inlined
procedures being optimized away. To avoid this, inlined
and renamed variables are marked as "inline-transient" - the
mark vanishes in the next optimization pass. The marking
was done for lambda-bound variables but not for let-bound
variables.


cheers,
felix
diff --git a/support.scm b/support.scm
index cb95c0d..d2444b8 100644
--- a/support.scm
+++ b/support.scm
@@ -673,6 +673,7 @@
 		  (val1 (walk (first subs) rl))
 		  (a (gensym v))
 		  (rl2 (alist-cons v a rl)) )
+	     (put! db a 'inline-transient #t)
 	     (make-node 
 	      'let (list a)
 	      (list val1 (walk (second subs) rl2)))) ]
_______________________________________________
Chicken-hackers mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-hackers

Reply via email to