|
From: | Paul Eggert |
Subject: | Re: Simplify internal_catch() |
Date: | Sat, 31 Dec 2016 13:29:06 -0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 |
Stefan Monnier wrote:
At least I know Richard made me undo some "Lisp_Object foo = ..." years ago, saying that we shouldn't do that because it fails to compile in some cases (presumably when you used some specific compiler and you also asked for Lisp_Object to be a union rather than an int). I did not heed his advice very eagerly, to tell you the truth.
Many pre-C89 compilers indeed did not support union initializers (i.e., 'union u x = { something };', so perhaps there was some confusion about what worked and what didn't. Anyway, that water passed under the bridge long ago.
In reviewing this patch, I noticed some other confusion in this area that I introduced in 2013 while pacifying gcc -Wclobbered, and which I think you asked about but I didn't understand your question at the time (sorry). I attempted to fix the problem just now by installing the attached patch, which undoes Chris's simplification and then reworks the setjmp calls to use a local rather than a global. This avoid a need to load from a static variable in the normal flow of execution.
0001-Clarify-internal_catch-etc.txt
Description: Text document
[Prev in Thread] | Current Thread | [Next in Thread] |