bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bison gcc issues


From: Paul Eggert
Subject: Re: bison gcc issues
Date: Sun, 22 Jan 2006 00:24:21 -0800
User-agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux)

twlevo <address@hidden> writes:

> ./configure --enable-gcc-warnings
> ...
> subpipe.c: In function `create_subpipe':
> subpipe.c:143: warning: cast discards qualifiers from pointer target type

In general we don't worry about warnings like that (in library files).
That's why the compilation keeps going.  Library files tend to be a
bit messier.

> In file included from scan-skel-c.c:2:
> scan-skel.c:643: warning: no previous prototype for 'skel_lex'

It sounds like your flex (probably unpatched 2.5.31?) differs from
mine (Debian stable patches for 2.5.31).  Mine generates a prototype
for skel_lex.  I guess it's easy enough to work around the
discrepancy; please see below.

>   BISON_WARNING(-Wswitch-default)

That's a bit drastic in general, but I suppose we can fix some of
them.  On my system, -Wswitch-default causes quite a few useless
diagnostics, since memset expands to a switch statement that lacks a
default case.

> quotearg.c:310: warning: switch missing default case
> quotearg.c:457: warning: switch missing default case

That's a gnulib issue, which I suppose we can address separately at
some point.

> scan-gram.c:2210: warning: switch missing default case
> scan-skel.c:978: warning: switch missing default case

That's flex-generated code; no point worrying about it.

> conflicts.c:97: warning: switch missing default case
> conflicts.c:132: warning: switch missing default case

It'd be pure busywork to change that code, I suspect.  "default:
break;" would be misleading, since the default case can't occur.
"default: abort ();" would insert an unnecessary runtime check.

> assoc.c:43: warning: switch missing default case
> scan-gram.l:762: warning: switch missing default case

These are easy enough to suppress.  I installed the following.
Thanks for the checking.

2006-01-22  Paul Eggert  <address@hidden>

        * src/assoc.c (assoc_to_string): Use a default: abort (); case
        to pacify gcc -Wswitch-default.
        * src/scan-gram.l (adjust_location): Use a default: break; case
        to pacify gcc -Wswitch-default.
        * src/scan-skel.h (skel_get_lineno, skel_get_in, skel_get_out):
        (skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
        (skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
        Move these decls to scan-skel.l, since they don't need to be
        visible elsewhere.
        * src/scan-skel.l: Accept the above decls.
        (skel_lex): New decl, to pacify GCC when unpatched flex 2.5.31
        is used.

Index: src/assoc.c
===================================================================
RCS file: /cvsroot/bison/bison/src/assoc.c,v
retrieving revision 1.6
diff -p -u -r1.6 assoc.c
--- src/assoc.c 9 Dec 2005 23:51:25 -0000       1.6
+++ src/assoc.c 22 Jan 2006 08:08:53 -0000
@@ -1,5 +1,5 @@
 /* Associativity information.
-   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -29,6 +29,9 @@ assoc_to_string (assoc a)
 {
   switch (a)
     {
+    default:
+      abort ();
+
     case undef_assoc:
       return "undefined associativity";
 
@@ -41,5 +44,4 @@ assoc_to_string (assoc a)
     case non_assoc:
       return "%nonassoc";
     }
-  return NULL;
 }
Index: src/scan-gram.l
===================================================================
RCS file: /cvsroot/bison/bison/src/scan-gram.l,v
retrieving revision 1.83
diff -p -u -r1.83 scan-gram.l
--- src/scan-gram.l     22 Jan 2006 07:38:49 -0000      1.83
+++ src/scan-gram.l     22 Jan 2006 08:08:53 -0000
@@ -752,12 +752,13 @@ adjust_location (location *loc, char con
        break;
 
       case '\t':
-       {
-         column = add_column_width (column, p0, p - p0);
-         column = add_column_width (column, NULL, 8 - ((column - 1) & 7));
-         p0 = p + 1;
-         break;
-       }
+       column = add_column_width (column, p0, p - p0);
+       column = add_column_width (column, NULL, 8 - ((column - 1) & 7));
+       p0 = p + 1;
+       break;
+
+      default:
+       break;
       }
 
   scanner_cursor.line = line;
Index: src/scan-skel.h
===================================================================
RCS file: /cvsroot/bison/bison/src/scan-skel.h,v
retrieving revision 1.1
diff -p -u -r1.1 scan-skel.h
--- src/scan-skel.h     24 Jul 2005 07:24:22 -0000      1.1
+++ src/scan-skel.h     22 Jan 2006 08:08:53 -0000
@@ -1,6 +1,6 @@
 /* Scan Bison Skeletons.
 
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -26,16 +26,3 @@ extern FILE *skel_in;
 extern FILE *skel_out;
 extern int skel__flex_debug;
 extern int skel_lineno;
-
-/* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used.  */
-int skel_get_lineno (void);
-FILE *skel_get_in (void);
-FILE *skel_get_out (void);
-int skel_get_leng (void);
-char *skel_get_text (void);
-void skel_set_lineno (int);
-void skel_set_in (FILE *);
-void skel_set_out (FILE *);
-int skel_get_debug (void);
-void skel_set_debug (int);
-int skel_lex_destroy (void);
Index: src/scan-skel.l
===================================================================
RCS file: /cvsroot/bison/bison/src/scan-skel.l,v
retrieving revision 1.38
diff -p -u -r1.38 scan-skel.l
--- src/scan-skel.l     21 Jan 2006 04:35:09 -0000      1.38
+++ src/scan-skel.l     22 Jan 2006 08:08:53 -0000
@@ -39,6 +39,20 @@
 #include "files.h"
 #include "scan-skel.h"
 
+/* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used.  */
+int skel_lex (void);
+int skel_get_lineno (void);
+FILE *skel_get_in (void);
+FILE *skel_get_out (void);
+int skel_get_leng (void);
+char *skel_get_text (void);
+void skel_set_lineno (int);
+void skel_set_in (FILE *);
+void skel_set_out (FILE *);
+int skel_get_debug (void);
+void skel_set_debug (int);
+int skel_lex_destroy (void);
+
 #define QPUTS(String) \
    fputs (quotearg_style (c_quoting_style, String), yyout)
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]