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.