mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
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:
17
ChangeLog
17
ChangeLog
@@ -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>
|
2011-05-01 Joel E. Denny <joeldenny@joeldenny.org>
|
||||||
|
|
||||||
Fix precedence for end token.
|
Fix precedence for end token.
|
||||||
|
|||||||
@@ -84,7 +84,6 @@ if test "${enableval}" = yes; then
|
|||||||
WARN_CFLAGS_TEST="$WARN_CFLAGS $WARN_CFLAGS_TEST"
|
WARN_CFLAGS_TEST="$WARN_CFLAGS $WARN_CFLAGS_TEST"
|
||||||
AC_SUBST([WARN_CXXFLAGS_TEST])
|
AC_SUBST([WARN_CXXFLAGS_TEST])
|
||||||
AC_SUBST([WARN_CFLAGS_TEST])
|
AC_SUBST([WARN_CFLAGS_TEST])
|
||||||
AC_DEFINE([lint], 1, [Define to 1 if the compiler is checking for lint.])
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BISON_TEST_FOR_WORKING_C_COMPILER
|
BISON_TEST_FOR_WORKING_C_COMPILER
|
||||||
|
|||||||
@@ -120,13 +120,13 @@ splice (\\[ \f\t\v]*\n)*
|
|||||||
%%
|
%%
|
||||||
%{
|
%{
|
||||||
/* Nesting level of the current code in braces. */
|
/* 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. */
|
/* 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 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
|
/* Where containing code started, when applicable. Its initial
|
||||||
value is relevant only when yylex is invoked in the SC_EPILOGUE
|
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,
|
/* Where containing comment or string or character literal started,
|
||||||
when applicable. */
|
when applicable. */
|
||||||
boundary token_start IF_LINT (= scanner_cursor);
|
boundary token_start PACIFY_CC (= scanner_cursor);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
char *outname = NULL;
|
||||||
|
|
||||||
/* Currently, only the @warn, @complain, @fatal, @warn_at, @complain_at, and
|
/* Currently, only the @warn, @complain, @fatal, @warn_at, @complain_at, and
|
||||||
|
|||||||
20
src/system.h
20
src/system.h
@@ -66,13 +66,19 @@ typedef size_t uintptr_t;
|
|||||||
| GCC extensions. |
|
| GCC extensions. |
|
||||||
`-----------------*/
|
`-----------------*/
|
||||||
|
|
||||||
/* Use this to suppress gcc's `...may be used before initialized'
|
/* Use PACIFY_CC to indicate that Code is unimportant to the logic of Bison
|
||||||
warnings. */
|
but that it is necessary for suppressing compiler warnings. For example,
|
||||||
#ifdef lint
|
Code might be a variable initializer that's always overwritten before the
|
||||||
# define IF_LINT(Code) Code
|
variable is used.
|
||||||
#else
|
|
||||||
# define IF_LINT(Code) /* empty */
|
PACIFY_CC is intended to be useful only as a comment as it does not alter
|
||||||
#endif
|
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__
|
#ifndef __attribute__
|
||||||
/* This feature is available in gcc versions 2.5 and later. */
|
/* This feature is available in gcc versions 2.5 and later. */
|
||||||
|
|||||||
Reference in New Issue
Block a user