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]

Re: libiberty doesn't build with a K+R compiler


On Mon, May 07, 2001 at 09:13:41PM -0700, Mark Mitchell wrote:
> 
> Zack --
> 
>   The obvious patches are pre-approved, if you want to go for it. :-)

I suppose I asked for that...

The problems were in demangle.h, cp-demangle.c, ternary.[ch].  I
constified some of the routines in ternary.c while I was at it.
[N.B. 'const ternary_tree' is NOT the same thing as 'const
ternary_node *'.  The former is a constant pointer to variable data,
the latter is a variable pointer to constant data, which is what we want.]

Tested with 'make stage1_build' on i686-linux and hppa-hpux11, the
latter with the K+R compiler.  The whole patch has been applied to
mainline, the demangler bits to branch (ternary.[ch] don't exist on
the branch).

-- 
zw              But the voices in my head are what keeps me sane.
                	-- Shweta Narayan

	* demangle.h: Use PARAMS for all prototypes.
	* ternary.h: Use PARAMS for all prototypes.  Use PTR, not void *.
	Make arguments constant where possible.

	* cp-demangle.c (demangle_v3_with_details,
	is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_dtor): Use K+R style
	function definition.
	* ternary.c: Use K+R style function definitions.  Use PTR, not
	void *.  Make arguments constant where possible.

===================================================================
Index: include/demangle.h
--- include/demangle.h	2001/03/21 19:37:53	1.15
+++ include/demangle.h	2001/05/08 06:05:23
@@ -139,7 +139,8 @@ enum gnu_v3_ctor_kinds {
    in the G++ V3 ABI demangling style.  Specifically, return an `enum
    gnu_v3_ctor_kinds' value indicating what kind of constructor
    it is.  */
-extern enum gnu_v3_ctor_kinds is_gnu_v3_mangled_ctor (const char *name);
+extern enum gnu_v3_ctor_kinds
+	is_gnu_v3_mangled_ctor PARAMS ((const char *name));
 
 
 enum gnu_v3_dtor_kinds {
@@ -152,6 +153,7 @@ enum gnu_v3_dtor_kinds {
    in the G++ V3 ABI demangling style.  Specifically, return an `enum
    gnu_v3_dtor_kinds' value, indicating what kind of destructor
    it is.  */
-extern enum gnu_v3_dtor_kinds is_gnu_v3_mangled_dtor (const char *name);
+extern enum gnu_v3_dtor_kinds
+	is_gnu_v3_mangled_dtor PARAMS ((const char *name));
 
 #endif	/* DEMANGLE_H */
===================================================================
Index: include/ternary.h
--- include/ternary.h	2001/04/16 15:30:16	1.1
+++ include/ternary.h	2001/05/08 06:05:23
@@ -38,13 +38,14 @@ ternary_node;
    already there, and replace is 0.
    Otherwise, replaces if it it exists, inserts if it doesn't, and
    returns the data you passed in. */
-void *ternary_insert (ternary_tree *p, char *s, void *data, int replace);
+PTR ternary_insert PARAMS ((ternary_tree *p, const char *s,
+			    PTR data, int replace));
 
 /* Delete the ternary search tree rooted at P. 
    Does NOT delete the data you associated with the strings. */
-void ternary_cleanup (ternary_tree p);
+void ternary_cleanup PARAMS ((ternary_tree p));
 
 /* Search the ternary tree for string S, returning the data associated
    with it if found. */
-void *ternary_search (ternary_tree p, char *s);
+PTR ternary_search PARAMS ((const ternary_node *p, const char *s));
 #endif
===================================================================
Index: libiberty/cp-demangle.c
--- libiberty/cp-demangle.c	2001/03/23 22:12:55	1.30
+++ libiberty/cp-demangle.c	2001/05/08 06:05:27
@@ -3819,7 +3819,8 @@ java_demangle_v3 (mangled)
    zero, indicating that some error occurred, or a demangling_t
    holding the results.  */
 static demangling_t
-demangle_v3_with_details (const char *name)
+demangle_v3_with_details (name)
+     const char *name;
 {
   demangling_t dm;
   status_t status;
@@ -3857,7 +3858,8 @@ demangle_v3_with_details (const char *na
    - '2' if NAME is a base object constructor, or
    - '3' if NAME is a complete object allocating constructor.  */
 enum gnu_v3_ctor_kinds
-is_gnu_v3_mangled_ctor (const char *name)
+is_gnu_v3_mangled_ctor (name)
+     const char *name;
 {
   demangling_t dm = demangle_v3_with_details (name);
 
@@ -3878,7 +3880,8 @@ is_gnu_v3_mangled_ctor (const char *name
    - '1' if NAME is a complete object destructor, or
    - '2' if NAME is a base object destructor.  */
 enum gnu_v3_dtor_kinds
-is_gnu_v3_mangled_dtor (const char *name)
+is_gnu_v3_mangled_dtor (name)
+     const char *name;
 {
   demangling_t dm = demangle_v3_with_details (name);
 
===================================================================
Index: libiberty/ternary.c
--- libiberty/ternary.c	2001/04/16 15:30:17	1.1
+++ libiberty/ternary.c	2001/05/08 06:05:27
@@ -33,8 +33,12 @@
 /* Non-recursive so we don't waste stack space/time on large
    insertions. */
 
-void *
-ternary_insert (ternary_tree * root, char *s, void *data, int replace)
+PTR
+ternary_insert (root, s, data, replace)
+     ternary_tree *root;
+     const char *s;
+     PTR data;
+     int replace;
 {
   int diff;
   ternary_tree curr, *pcurr;
@@ -54,7 +58,7 @@ ternary_insert (ternary_tree * root, cha
 	    {
 	      if (replace)
 		curr->eqkid = (ternary_tree) data;
-	      return (void *) curr->eqkid;
+	      return (PTR) curr->eqkid;
 	    }
 	  pcurr = &(curr->eqkid);
 	}
@@ -94,7 +98,8 @@ ternary_insert (ternary_tree * root, cha
 
 /* Free the ternary search tree rooted at p. */
 void
-ternary_cleanup (ternary_tree p)
+ternary_cleanup (p)
+     ternary_tree p;
 {
   if (p)
     {
@@ -107,10 +112,12 @@ ternary_cleanup (ternary_tree p)
 }
 
 /* Non-recursive find of a string in the ternary tree */
-void *
-ternary_search (ternary_tree p, char *s)
+PTR
+ternary_search (p, s)
+     const ternary_node *p;
+     const char *s;
 {
-  ternary_tree curr;
+  const ternary_node *curr;
   int diff, spchar;
   spchar = *s;
   curr = p;
@@ -123,7 +130,7 @@ ternary_search (ternary_tree p, char *s)
       if (diff == 0)
 	{
 	  if (spchar == 0)
-	    return (void *) curr->eqkid;
+	    return (PTR) curr->eqkid;
 	  spchar = *++s;
 	  curr = curr->eqkid;
 	}
@@ -139,8 +146,10 @@ ternary_search (ternary_tree p, char *s)
 
 /* For those who care, the recursive version of the search. Useful if
    you want a starting point for pmsearch or nearsearch. */
-static void *
-ternary_recursivesearch (ternary_tree p, char *s)
+static PTR
+ternary_recursivesearch (p, s)
+     const ternary_node *p;
+     const char *s;
 {
   if (!p)
     return 0;
@@ -151,7 +160,7 @@ ternary_recursivesearch (ternary_tree p,
   else
     {
       if (*s == 0)
-	return (void *) p->eqkid;
+	return (PTR) p->eqkid;
       return ternary_recursivesearch (p->eqkid, ++s);
     }
 }


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