Work around GCC bug 54561 in a better way
The new approach is less selective, but also less intrusive on C code. * src/bytecode.c, src/image.c, src/keyboard.c: Ignore -Wclobbered. * src/conf_post.h (NONVOLATILE): Remove. All uses removed.
This commit is contained in:
parent
63750fd4ed
commit
3e71e4379c
4 changed files with 19 additions and 15 deletions
|
@ -32,6 +32,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "xterm.h"
|
||||
#endif
|
||||
|
||||
/* Work around GCC bug 54561. */
|
||||
#if GNUC_PREREQ (4, 3, 0)
|
||||
# pragma GCC diagnostic ignored "-Wclobbered"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* define BYTE_CODE_SAFE to enable some minor sanity checking (useful for
|
||||
* debugging the byte compiler...)
|
||||
|
|
|
@ -368,15 +368,6 @@ extern int emacs_setenv_TZ (char const *);
|
|||
# define FLEXIBLE_ARRAY_MEMBER
|
||||
#endif
|
||||
|
||||
/* When used in place of 'volatile', 'NONVOLATILE' is equivalent to nothing,
|
||||
except it cajoles GCC into not warning incorrectly that a variable needs to
|
||||
be volatile. This works around GCC bug 54561. */
|
||||
#if defined GCC_LINT || defined lint
|
||||
# define NONVOLATILE volatile
|
||||
#else
|
||||
# define NONVOLATILE /* empty */
|
||||
#endif
|
||||
|
||||
/* 'int x UNINIT;' is equivalent to 'int x;', except it cajoles GCC
|
||||
into not warning incorrectly about use of an uninitialized variable. */
|
||||
#if defined GCC_LINT || defined lint
|
||||
|
|
13
src/image.c
13
src/image.c
|
@ -56,6 +56,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include TERM_HEADER
|
||||
#endif /* HAVE_WINDOW_SYSTEM */
|
||||
|
||||
/* Work around GCC bug 54561. */
|
||||
#if GNUC_PREREQ (4, 3, 0)
|
||||
# pragma GCC diagnostic ignored "-Wclobbered"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
typedef struct x_bitmap_record Bitmap_Record;
|
||||
#define GET_PIXEL(ximg, x, y) XGetPixel (ximg, x, y)
|
||||
|
@ -5897,9 +5902,8 @@ struct png_load_context
|
|||
static bool
|
||||
png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
|
||||
{
|
||||
Lisp_Object specified_file;
|
||||
Lisp_Object NONVOLATILE specified_data;
|
||||
FILE *NONVOLATILE fp = NULL;
|
||||
Lisp_Object specified_file, specified_data;
|
||||
FILE *fp = NULL;
|
||||
int x, y;
|
||||
ptrdiff_t i;
|
||||
png_struct *png_ptr;
|
||||
|
@ -6669,8 +6673,7 @@ static bool
|
|||
jpeg_load_body (struct frame *f, struct image *img,
|
||||
struct my_jpeg_error_mgr *mgr)
|
||||
{
|
||||
Lisp_Object specified_file;
|
||||
Lisp_Object NONVOLATILE specified_data;
|
||||
Lisp_Object specified_file, specified_data;
|
||||
FILE *volatile fp = NULL;
|
||||
JSAMPARRAY buffer;
|
||||
int row_stride, x, y;
|
||||
|
|
|
@ -70,6 +70,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include TERM_HEADER
|
||||
#endif /* HAVE_WINDOW_SYSTEM */
|
||||
|
||||
/* Work around GCC bug 54561. */
|
||||
#if GNUC_PREREQ (4, 3, 0)
|
||||
# pragma GCC diagnostic ignored "-Wclobbered"
|
||||
#endif
|
||||
|
||||
/* Variables for blockinput.h: */
|
||||
|
||||
/* Positive if interrupt input is blocked right now. */
|
||||
|
@ -2320,7 +2325,7 @@ read_char (int commandflag, Lisp_Object map,
|
|||
Lisp_Object prev_event,
|
||||
bool *used_mouse_menu, struct timespec *end_time)
|
||||
{
|
||||
Lisp_Object NONVOLATILE c;
|
||||
Lisp_Object c;
|
||||
ptrdiff_t jmpcount;
|
||||
sys_jmp_buf local_getcjmp;
|
||||
sys_jmp_buf save_jump;
|
||||
|
|
Loading…
Add table
Reference in a new issue