GNU bug report logs -
#42360
[feature/native-comp] miscompilation(?) of functions with non local exits
Previous Next
Reported by: Andrea Corallo <akrl <at> sdf.org>
Date: Wed, 15 Jul 2020 08:25:02 UTC
Severity: normal
Done: Andrea Corallo <akrl <at> sdf.org>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Due to a recent modification native-comp is (probably?) miscompiling
lexical scope functions with non local exits if they involve code with
side effect on local variables. Before fixing I prefer to double check
the correct behavior we want.
Considering the following piece of (lexical scoped) code:
===
(let (x)
(ignore-errors
(setq x t)
(error "foo"))
x)
===
Three options:
1- Because setq is evaluated the expression should always evaluate to
t.
2- Unwinding the original state of the stack is restored, when it was
saved 'x' was nil so the expression should evaluate to nil.
3- This is unspecified.
The current stock implementaion does always 1 so I'm prone to just go
for it but I wanted to double check to be on the safe side.
FYI 1 implies C register variables cannot be used to implement Lisp
local variable if non local exits are present.
Thanks
Andrea
--
akrl <at> sdf.org
This bug report was last modified 5 years and 37 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.