aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorMattias EngdegÄrd2023-11-13 11:49:32 +0100
committerMattias EngdegÄrd2023-11-13 12:16:37 +0100
commit1247dc87bab7ec56b05e87ab0ae8bf37aa90021b (patch)
treef580e28da784448fe68c5301907ebc4811eb377c /java
parent8090ab05434f39b73e6238ebc5ab8e4fcc52acf3 (diff)
downloademacs-1247dc87bab7ec56b05e87ab0ae8bf37aa90021b.tar.gz
emacs-1247dc87bab7ec56b05e87ab0ae8bf37aa90021b.zip
Fix variable aliasing bytecode miscompilation (bug#67116)
The compiler didn't cancel aliasing if the aliased variable was modified in a variable binding in the same `let` that created the alias. For example, (let ((x A)) (let ((y x) (z (setq x B))) y)) would incorrectly substitute y->x in the body form despite x being already modified at that point, which normally should have cancelled the aliasing. Bug reported by Alan Mackenzie. * lisp/emacs-lisp/byte-opt.el (byte-optimize--aliased-vars): Now an alist that also contains the aliases; update the doc string. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): * lisp/emacs-lisp/byte-opt.el (byte-optimize-let-form): Detect aliasing early for `let`-bound variables as well. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): Add test cases.
Diffstat (limited to 'java')
0 files changed, 0 insertions, 0 deletions