summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/gen-protos.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2002-02-01 18:16:02 +0000
committerobrien <obrien@FreeBSD.org>2002-02-01 18:16:02 +0000
commitc9ab9ae440a8066b2c2b85b157b1fdadcf09916a (patch)
tree086d9d6c8fbd4fc8fe4495059332f66bc0f8d12b /contrib/gcc/gen-protos.c
parent2ecfd8bd04b63f335c1ec6295740a4bfd97a4fa6 (diff)
downloadFreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.zip
FreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.tar.gz
Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
Diffstat (limited to 'contrib/gcc/gen-protos.c')
-rw-r--r--contrib/gcc/gen-protos.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/contrib/gcc/gen-protos.c b/contrib/gcc/gen-protos.c
index 1085035..96aeef9 100644
--- a/contrib/gcc/gen-protos.c
+++ b/contrib/gcc/gen-protos.c
@@ -1,5 +1,6 @@
/* gen-protos.c - massages a list of prototypes, for use by fixproto.
- Copyright (C) 1993, 94-96, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1996, 1998,
+ 1999 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -18,28 +19,31 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "hconfig.h"
#include "system.h"
#include "scan.h"
-#include "cpplib.h"
-#include "cpphash.h"
#undef abort
int verbose = 0;
-char *progname;
+const char *progname;
+
+static void add_hash PARAMS ((const char *));
+static int parse_fn_proto PARAMS ((char *, char *, struct fn_decl *));
#define HASH_SIZE 2503 /* a prime */
int hash_tab[HASH_SIZE];
int next_index;
+int collisions;
static void
add_hash (fname)
- char *fname;
+ const char *fname;
{
int i, i0;
/* NOTE: If you edit this, also edit lookup_std_proto in fix-header.c !! */
- i = hashf (fname, strlen (fname), HASH_SIZE);
+ i = hashstr (fname, strlen (fname)) % HASH_SIZE;
i0 = i;
if (hash_tab[i] != 0)
{
+ collisions++;
for (;;)
{
i = (i+1) % HASH_SIZE;
@@ -65,7 +69,7 @@ parse_fn_proto (start, end, fn)
char *start, *end;
struct fn_decl *fn;
{
- register char *ptr;
+ char *ptr;
int param_nesting = 1;
char *param_start, *param_end, *decl_start, *name_start, *name_end;
@@ -105,7 +109,8 @@ parse_fn_proto (start, end, fn)
}
name_end = ptr+1;
- while (ISALNUM ((unsigned char)*ptr) || *ptr == '_') --ptr;
+ while (ISIDNUM (*ptr))
+ --ptr;
name_start = ptr+1;
while (*ptr == ' ' || *ptr == '\t') ptr--;
ptr[1] = 0;
@@ -124,6 +129,8 @@ parse_fn_proto (start, end, fn)
return 1;
}
+extern int main PARAMS ((int, char **));
+
int
main (argc, argv)
int argc ATTRIBUTE_UNUSED;
@@ -181,5 +188,8 @@ main (argc, argv)
fprintf (outf, " %d,\n", hash_tab[i]);
fprintf (outf, "};\n");
+ fprintf (stderr, "gen-protos: %d entries %d collisions\n",
+ next_index, collisions);
+
return 0;
}
OpenPOWER on IntegriCloud