This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patch to cp-demangle.c for K&R compilers


The new libiberty file cp-demangle.c doesn't compile under sunos4 K&R
cc.  The chief problems are an ANSI function definition of
`template_arg_list_new' and the use of automatic aggregate
initialization of `operators'.

While in there, I fixed a few const and prototype warnings.
Tested by compiling with sunos4 cc.

Okay to install?

		--Kaveh


2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (cp-demangle.o): Depend on $(INCDIR)/demangle.h.

	* cp-demangle.c: Include demangle.h.
	(template_arg_list_new): DeANSIfy.
	(cp_demangle): Make static and add prototype.
	(operator_code, operators): Constify.
	(demangle_operator_name): Likewise for variables `p1', `p2' and `p'.

diff -rup orig/egcs-CVS20000606/libiberty/Makefile.in egcs-CVS20000606/libiberty/Makefile.in
--- orig/egcs-CVS20000606/libiberty/Makefile.in	Mon Jun  5 10:24:03 2000
+++ egcs-CVS20000606/libiberty/Makefile.in	Tue Jun  6 13:11:56 2000
@@ -263,7 +263,7 @@ choose-temp.o: config.h
 clock.o: config.h
 concat.o: $(INCDIR)/libiberty.h
 cplus-dem.o: config.h $(INCDIR)/demangle.h
-cp-demangle.o: config.h $(INCDIR)/dyn-string.h
+cp-demangle.o: config.h $(INCDIR)/dyn-string.h $(INCDIR)/demangle.h
 dyn-string.o: config.h $(INCDIR)/dyn-string.h
 fdmatch.o: $(INCDIR)/libiberty.h
 fnmatch.o: config.h $(INCDIR)/fnmatch.h
diff -rup orig/egcs-CVS20000606/libiberty/cp-demangle.c egcs-CVS20000606/libiberty/cp-demangle.c
--- orig/egcs-CVS20000606/libiberty/cp-demangle.c	Mon Jun  5 17:02:58 2000
+++ egcs-CVS20000606/libiberty/cp-demangle.c	Tue Jun  6 13:11:03 2000
@@ -44,6 +44,7 @@
 #include "ansidecl.h"
 #include "libiberty.h"
 #include "dyn-string.h"
+#include "demangle.h"
 
 /* If CP_DEMANGLE_DEBUG is defined, a trace of the grammar evaluation,
    and other debugging output, will be generated. */
@@ -513,7 +514,7 @@ substitutions_print (dm, fp)
 /* Creates a new template argument list.  */
 
 static template_arg_list_t
-template_arg_list_new (void)
+template_arg_list_new ()
 {
   template_arg_list_t new_list 
     = (template_arg_list_t) xmalloc (sizeof (struct template_arg_list_def));
@@ -775,6 +776,8 @@ static status_t demangle_local_name
   PARAMS ((demangling_t));
 static status_t demangle_discriminator 
   PARAMS ((demangling_t, int));
+static status_t cp_demangle
+  PARAMS ((char *, dyn_string_t));
 
 /* When passed to demangle_bare_function_type, indicates that the
    function's return type is not encoded before its parameter types.  */
@@ -1308,14 +1311,14 @@ demangle_operator_name (dm, short_name, 
   struct operator_code
   {
     /* The mangled code for this operator.  */
-    char *code;
+    const char *code;
     /* The source name of this operator.  */
-    char *name;
+    const char *name;
     /* The number of arguments this operator takes.  */
     int num_args;
   };
 
-  struct operator_code operators[] = 
+  static const struct operator_code operators[] = 
   {
     { "aN", "&="       , 2 },
     { "aS", "="        , 2 },
@@ -1371,8 +1374,8 @@ demangle_operator_name (dm, short_name, 
 
   int c0 = next_char (dm);
   int c1 = next_char (dm);
-  struct operator_code* p1 = operators;
-  struct operator_code* p2 = operators + num_operators;
+  const struct operator_code* p1 = operators;
+  const struct operator_code* p2 = operators + num_operators;
 
   DEMANGLE_TRACE ("operator-name", dm);
 
@@ -1398,7 +1401,7 @@ demangle_operator_name (dm, short_name, 
   /* Perform a binary search for the operator code.  */
   while (1)
     {
-      struct operator_code* p = p1 + (p2 - p1) / 2;
+      const struct operator_code* p = p1 + (p2 - p1) / 2;
       char match0 = p->code[0];
       char match1 = p->code[1];
 
@@ -2744,7 +2747,7 @@ demangle_discriminator (dm, suppress_fir
    dyn_string_t.  On success, returns STATUS_OK.  On failure, returns
    an error message, and the contents of RESULT are unchanged.  */
 
-status_t
+static status_t
 cp_demangle (name, result)
      char *name;
      dyn_string_t result;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]