[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#46387: 28.0.50; Compiled code making a variable dynamic stopped work
From: |
Michael Heerdegen |
Subject: |
bug#46387: 28.0.50; Compiled code making a variable dynamic stopped working |
Date: |
Wed, 10 Feb 2021 04:20:46 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Mattias Engdegård <mattiase@acm.org> writes:
> As it turns out, parts of the implementation have different opinions
> about that. As you observed, the recently added optimisation on master
> takes a strict syntactic view: even a `progn` is a lexical scope, and
> `with-suppressed-warnings` wraps its body in a `progn`; thus your
> `defvar` declarations have no effect outside that construct.
Seems this is the related code change (took quite a while until I found
that):
83983b6b7a115474572973b62eb5e42251713e63
Author: Mattias Engdegård <mattiase@acm.org>
AuthorDate: Sat Feb 6 18:34:45 2021 +0100
(defun byte-optimize-body (forms all-for-effect)
;; Optimize the cdr of a progn or implicit progn; all forms is a list of
@@ -590,6 +763,7 @@ byte-optimize-body
;; all-for-effect is true. returns a new list of forms.
(let ((rest forms)
(result nil)
+ (byte-optimize--dynamic-vars byte-optimize--dynamic-vars)
fe new)
(while rest
(setq fe (or all-for-effect (cdr rest)))
Should that line just be removed?
TIA,
Michael.