]> git.eshelyaron.com Git - emacs.git/commit
Don’t ignore -Wclobbered in bytecode.c
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 16 Aug 2024 23:29:51 +0000 (16:29 -0700)
committerEshel Yaron <me@eshelyaron.com>
Tue, 20 Aug 2024 14:08:48 +0000 (16:08 +0200)
commit652df068006675be0330b236f9cff27c7e16f08f
tree042675b4061b545c985791fb2b010920f376484a
parent8dfeec88812ec7b885edf25e01d7e3645d9c71eb
Don’t ignore -Wclobbered in bytecode.c

This fix is prompted by Emacs bug#71744.
The working hypothesis is that there are some bugs in Emacs,
and some in GCC’s diagnostics, and that this patch
fixes the Emacs bugs and works around the GCC diagnostic bugs.
The hypothesis is that GCC diagnostic bugs occur when GCC
coalesces variables or temporaries and some variables
are clobbered by setjmp and some vars/temps are not.
Part of this hypothesis involves GCC diagnosing the wrong variables.
Instead of ignoring the diagnostics, which the hypothesis suggests
indicate either problems in Emacs or in GCC, fix the Emacs bugs
and pacify the GCC false positives, with comments about the GCC bugs.
GCC’s true positives are helpful enough in squashing obscure bugs like
Emacs bug#71744, that it’s worth going to some effort to pacify
-Wclobbered instead of ignoring it.
* src/bytecode.c: Do not ignore -Wclobbered.
(exec_byte_code): Fix violations of the C standard, where setjmp
clobbered quitcounter and bc.  If GCC_LINT && __GNUC__ && !__clang__,
work around GCC -Wclobbered warnings for bytestr_data and vectorp.

(cherry picked from commit 2169a9387a5ac22b969d37ece4ec1aaa0fd830d9)
src/bytecode.c