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.
This commit is contained in:
Joel E. Denny
2011-05-14 16:16:26 -04:00
parent 9d6af15318
commit 77bb73e7af
5 changed files with 35 additions and 13 deletions

View File

@@ -1,3 +1,20 @@
2011-05-14 Joel E. Denny <joeldenny@joeldenny.org>
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.
2011-05-01 Joel E. Denny <joeldenny@joeldenny.org>
Fix precedence for end token.

View File

@@ -84,7 +84,6 @@ if test "${enableval}" = yes; then
WARN_CFLAGS_TEST="$WARN_CFLAGS $WARN_CFLAGS_TEST"
AC_SUBST([WARN_CXXFLAGS_TEST])
AC_SUBST([WARN_CFLAGS_TEST])
AC_DEFINE([lint], 1, [Define to 1 if the compiler is checking for lint.])
fi
BISON_TEST_FOR_WORKING_C_COMPILER

View File

@@ -120,13 +120,13 @@ splice (\\[ \f\t\v]*\n)*
%%
%{
/* Nesting level of the current code in braces. */
int braces_level IF_LINT (= 0);
int braces_level 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
@@ -135,7 +135,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);
%}

View File

@@ -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

View File

@@ -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. */