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
