summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel E. Denny <joeldenny@joeldenny.org>2011-05-14 16:16:26 -0400
committerJoel E. Denny <joeldenny@joeldenny.org>2011-05-14 17:00:04 -0400
commit84f6a6ca7051c44d5f10aeb38d92b30c1ef190bd (patch)
tree1b1a17b3a0fb25cbdb49f1266a1377854719f7dc
parent1f36f54446248b8984b9c378b0c756a6b51b34cb (diff)
downloadbison-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
-rw-r--r--ChangeLog17
-rw-r--r--configure.ac1
-rw-r--r--src/scan-gram.l8
-rw-r--r--src/scan-skel.l2
-rw-r--r--src/system.h20
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 <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.
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. */