Eli Zaretskii writes: >> From: Lars Ingebrigtsen >> Cc: Andrea Corallo , corwin@bru.st, bartosz.bubak@gmail.com, >> 58318@debbugs.gnu.org >> Date: Fri, 07 Oct 2022 14:04:57 +0200 >> >> Eli Zaretskii writes: >> >> > Maybe there's a misunderstanding of what you meant by "if a compiler >> > isn't present". By "the compiler" do you mean libgccjit, or is it GCC >> > and Binutils (or maybe all 3 together)? IOW, are you talking about >> > the ability to load existing *.eln files, or are you talking about the >> > ability to both load existing *.eln files and produce new ones? >> >> I'm talking about trampolines, nothing else. > > Trampoline generation requires all the 3 components to be present, > AFAIK. Andrea, am I right? AFAIU only libgccjit and Binutils are necessary, but libgccjit *is* GCC (in the sense another frontend fo the GNU Compiler Collection). I *think* gcc the binary (read the C frontend) should not be required. But I don't know how distros package libgccjit and gcc, there might be some dendency I'm not aware of. >> > The startup code currently detects that libgccjit is unavailable or >> > cannot be loaded, and if so, disables all the aspects of >> > native-compilation: both JIT compilation of *.el and production of the >> > trampolines. I'm not aware that when we disable those two, we get >> > Emacs that is not "fully functional". >> >> If native compilation is disabled in a native-compiled Emacs, then >> >> (fset 'yes-or-no-p 'y-or-n-p) >> >> doesn't work (for calls to `yes-or-no-p' in native-compiled code). >> That's what I meant by "not fully functional". > > If it indeed doesn't work (and I wasn't aware it didn't work), we > should try fixing it, if that is feasible. Yes because `yes-or-no-p' is a primitive, so with no trampolines its redefinition is not functional. A quick ad-hoc fix for `yes-or-no-p' is attached. It does not have a perf impact as `yes-or-no-p' will have to wait for the user input anyway, if okay I can push it. Oherwise another strategy would be to disable direct calls from lisp native code into primitives on Windows, this indeed has a performance impact.