diff options
author | Joel E. Denny <joeldenny@joeldenny.org> | 2011-05-14 16:16:26 -0400 |
---|---|---|
committer | Joel E. Denny <joeldenny@joeldenny.org> | 2011-05-14 17:00:04 -0400 |
commit | 84f6a6ca7051c44d5f10aeb38d92b30c1ef190bd (patch) | |
tree | 1b1a17b3a0fb25cbdb49f1266a1377854719f7dc /src | |
parent | 1f36f54446248b8984b9c378b0c756a6b51b34cb (diff) | |
download | bison-84f6a6ca7051c44d5f10aeb38d92b30c1ef190bd.tar.gz |
Don't use IF_LINT in Bison sources.
It creates unnecessary differences between the sources that Bison
maintainers build and test (given that maintainers normally
configure with --enable-gcc-warnings) and the sources that Bison
users build. Instead, use PACIFY_CC, which doesn't. This change
fixes compiler warnings reported by Tys Lefering at
<http://lists.gnu.org/archive/html/bison-patches/2011-05/msg00004.html>.
* configure.ac: Don't AC_DEFINE lint regardless of the configure
options. This change affects imported gnulib sources, where
IF_LINT still appears and depends on lint.
* src/scan-gram.l, src/scan-skel.l: Replace uses of IF_LINT with
PACIFY_CC.
* src/system.h (IF_LINT): Remove cpp macro.
(PACIFY_CC): New cpp macro.
(cherry picked from commit 77bb73e7af76ef5180b22c3b8355aaff1f498f68)
Conflicts:
src/scan-gram.l
Diffstat (limited to 'src')
-rw-r--r-- | src/scan-gram.l | 8 | ||||
-rw-r--r-- | src/scan-skel.l | 2 | ||||
-rw-r--r-- | src/system.h | 20 |
3 files changed, 18 insertions, 12 deletions
diff --git a/src/scan-gram.l b/src/scan-gram.l index 15b6b31d..cd901f71 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -138,13 +138,13 @@ splice (\\[ \f\t\v]*\n)* %{ /* Nesting level. Either for nested braces, or nested angle brackets (but not mixed). */ - int nesting IF_LINT (= 0); + int nesting PACIFY_CC (= 0); /* Parent context state, when applicable. */ - int context_state IF_LINT (= 0); + int context_state PACIFY_CC (= 0); /* Location of most recent identifier, when applicable. */ - location id_loc IF_LINT (= empty_location); + location id_loc PACIFY_CC (= empty_location); /* Where containing code started, when applicable. Its initial value is relevant only when yylex is invoked in the SC_EPILOGUE @@ -153,7 +153,7 @@ splice (\\[ \f\t\v]*\n)* /* Where containing comment or string or character literal started, when applicable. */ - boundary token_start IF_LINT (= scanner_cursor); + boundary token_start PACIFY_CC (= scanner_cursor); %} diff --git a/src/scan-skel.l b/src/scan-skel.l index 805af34e..4cc8e32b 100644 --- a/src/scan-skel.l +++ b/src/scan-skel.l @@ -58,7 +58,7 @@ static void fail_for_invalid_at (char const *at); %% %{ - int out_lineno IF_LINT (= 0); + int out_lineno PACIFY_CC (= 0); char *outname = NULL; /* Currently, only the @warn, @complain, @fatal, @warn_at, @complain_at, and diff --git a/src/system.h b/src/system.h index 97a92257..13669a40 100644 --- a/src/system.h +++ b/src/system.h @@ -66,13 +66,19 @@ typedef size_t uintptr_t; | GCC extensions. | `-----------------*/ -/* Use this to suppress gcc's `...may be used before initialized' - warnings. */ -#ifdef lint -# define IF_LINT(Code) Code -#else -# define IF_LINT(Code) /* empty */ -#endif +/* Use PACIFY_CC to indicate that Code is unimportant to the logic of Bison + but that it is necessary for suppressing compiler warnings. For example, + Code might be a variable initializer that's always overwritten before the + variable is used. + + PACIFY_CC is intended to be useful only as a comment as it does not alter + Code. It is tempting to redefine PACIFY_CC so that it will suppress Code + when configuring without --enable-gcc-warnings. However, that would mean + that, for maintainers, Bison would compile with potentially less warnings + and safer logic than it would for users. Due to the overhead of M4, + suppressing Code is unlikely to offer any significant improvement in + Bison's performance anyway. */ +#define PACIFY_CC(Code) Code #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ |