]> git.saurik.com Git - bison.git/commitdiff
Don't use IF_LINT in Bison sources.
authorJoel E. Denny <joeldenny@joeldenny.org>
Sat, 14 May 2011 20:16:26 +0000 (16:16 -0400)
committerJoel E. Denny <joeldenny@joeldenny.org>
Sat, 14 May 2011 21:00:04 +0000 (17:00 -0400)
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

ChangeLog
configure.ac
src/scan-gram.l
src/scan-skel.l
src/system.h

index 595f782d8e3875244a496ced3b0e1272d12d1262..143cbbf6cee4b393533949bd4a7539e5d817f7bf 100644 (file)
--- 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.
index 39d42578feb326c9836bb11ec610faa5f100867d..6a0ba211d6ac985cb345195dab583324a4f44d48 100644 (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
index 15b6b31d93fec0d55b741aa9d1c11ef40db5a07b..cd901f71f1a75c65150cb5790f81fb270e87923a 100644 (file)
@@ -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);
 %}
 
 
index 805af34e5fe2b5ec18098645ccebf66f066c97d9..4cc8e32b312c78dc7a411dabfa4411b7717990f3 100644 (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
index 97a92257339ea2fb683764406780ba9c59a0248e..13669a403ca61f6f15f02c04743ddf9ae63aae95 100644 (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.  */