diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2016-07-20 10:31:33 +0200 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2016-07-20 10:32:24 +0200 |
commit | 3e71e4379ce7b53afe51ead4c94e6bb016bc6e7a (patch) | |
tree | f1a28805fc683c4b9cf712c73283ec4115fcdd75 /src | |
parent | 63750fd4ed4ff8bb9b3ff8868d4e36e3422adb21 (diff) | |
download | emacs-3e71e4379ce7b53afe51ead4c94e6bb016bc6e7a.tar.gz emacs-3e71e4379ce7b53afe51ead4c94e6bb016bc6e7a.tar.bz2 emacs-3e71e4379ce7b53afe51ead4c94e6bb016bc6e7a.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/bytecode.c | 5 | ||||
-rw-r--r-- | src/conf_post.h | 9 | ||||
-rw-r--r-- | src/image.c | 13 | ||||
-rw-r--r-- | src/keyboard.c | 7 |
4 files changed, 19 insertions, 15 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index bb7922d54a4..1b02c60c618 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -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...) diff --git a/src/conf_post.h b/src/conf_post.h index 99aafbffae6..865d0183a57 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -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 diff --git a/src/image.c b/src/image.c index 572557dd264..1770de7e8ff 100644 --- a/src/image.c +++ b/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; diff --git a/src/keyboard.c b/src/keyboard.c index 653f52732a7..8901ff055e7 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -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; |