From 84f6a6ca7051c44d5f10aeb38d92b30c1ef190bd Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Sat, 14 May 2011 16:16:26 -0400 Subject: [PATCH] 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 . * 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 --- ChangeLog | 17 +++++++++++++++++ configure.ac | 1 - src/scan-gram.l | 8 ++++---- src/scan-skel.l | 2 +- src/system.h | 20 +++++++++++++------- 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 595f782d..143cbbf6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2011-05-14 Joel E. Denny + + 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 + . + * 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 Fix precedence for end token. diff --git a/configure.ac b/configure.ac index 39d42578..6a0ba211 100644 --- a/configure.ac +++ b/configure.ac @@ -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 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. */ -- 2.45.2