]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/gdbtypes.c
import gdb-1999-07-07 post reformat
[thirdparty/binutils-gdb.git] / gdb / gdbtypes.c
index dc026a4159d16c93862f0e805ce23970a29970da..6e013af43e703d4347a6d736a06a9a626e9fcbff 100644 (file)
@@ -2,21 +2,22 @@
    Copyright (C) 1992, 93, 94, 95, 96, 1998 Free Software Foundation, Inc.
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
-This file is part of GDB.
+   This file is part of GDB.
 
-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 Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   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 Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
 #include "gdb_string.h"
@@ -68,7 +69,11 @@ struct type *builtin_type_bool;
 int opaque_type_resolution = 1;
 
 
-struct extra { char str[128]; int len; }; /* maximum extention is 128! FIXME */
+struct extra
+  {
+    char str[128];
+    int len;
+  };                           /* maximum extention is 128! FIXME */
 
 static void add_name PARAMS ((struct extra *, char *));
 static void add_mangled_type PARAMS ((struct extra *, struct type *));
@@ -79,7 +84,7 @@ static void print_bit_vector PARAMS ((B_TYPE *, int));
 static void print_arg_types PARAMS ((struct type **, int));
 static void dump_fn_fieldlists PARAMS ((struct type *, int));
 static void print_cplus_stuff PARAMS ((struct type *, int));
-static void virtual_base_list_aux PARAMS ((struct type *dclass));
+static void virtual_base_list_aux PARAMS ((struct type * dclass));
 
 
 /* Alloc a new type structure and fill it with some defaults.  If
@@ -96,12 +101,12 @@ alloc_type (objfile)
 
   if (objfile == NULL)
     {
-      type  = (struct type *) xmalloc (sizeof (struct type));
+      type = (struct type *) xmalloc (sizeof (struct type));
     }
   else
     {
-      type  = (struct type *) obstack_alloc (&objfile -> type_obstack,
-                                            sizeof (struct type));
+      type = (struct type *) obstack_alloc (&objfile->type_obstack,
+                                           sizeof (struct type));
       OBJSTAT (objfile, n_types++);
     }
   memset ((char *) type, 0, sizeof (struct type));
@@ -111,7 +116,7 @@ alloc_type (objfile)
   TYPE_CODE (type) = TYPE_CODE_UNDEF;
   TYPE_OBJFILE (type) = objfile;
   TYPE_VPTR_FIELDNO (type) = -1;
-  TYPE_CV_TYPE (type) = type;  /* chain back to itself */ 
+  TYPE_CV_TYPE (type) = type;  /* chain back to itself */
 
   return (type);
 }
@@ -126,20 +131,20 @@ make_pointer_type (type, typeptr)
      struct type *type;
      struct type **typeptr;
 {
-  register struct type *ntype;         /* New type */
+  register struct type *ntype; /* New type */
   struct objfile *objfile;
 
   ntype = TYPE_POINTER_TYPE (type);
 
-  if (ntype) 
+  if (ntype)
     {
-      if (typeptr == 0)                
-        return ntype;  /* Don't care about alloc, and have new type.  */
+      if (typeptr == 0)
+       return ntype;           /* Don't care about alloc, and have new type.  */
       else if (*typeptr == 0)
-        {
+       {
          *typeptr = ntype;     /* Tracking alloc, and we have new type.  */
          return ntype;
-        }
+       }
     }
 
   if (typeptr == 0 || *typeptr == 0)   /* We'll need to allocate one.  */
@@ -148,7 +153,8 @@ make_pointer_type (type, typeptr)
       if (typeptr)
        *typeptr = ntype;
     }
-  else                         /* We have storage, but need to reset it.  */
+  else
+    /* We have storage, but need to reset it.  */
     {
       ntype = *typeptr;
       objfile = TYPE_OBJFILE (ntype);
@@ -166,7 +172,7 @@ make_pointer_type (type, typeptr)
 
   /* pointers are unsigned */
   TYPE_FLAGS (ntype) |= TYPE_FLAG_UNSIGNED;
-  
+
   if (!TYPE_POINTER_TYPE (type))       /* Remember it, if don't have one.  */
     TYPE_POINTER_TYPE (type) = ntype;
 
@@ -180,7 +186,7 @@ struct type *
 lookup_pointer_type (type)
      struct type *type;
 {
-  return make_pointer_type (type, (struct type **)0);
+  return make_pointer_type (type, (struct type **) 0);
 }
 
 /* Lookup a C++ `reference' to a type TYPE.  TYPEPTR, if nonzero, points
@@ -193,20 +199,20 @@ make_reference_type (type, typeptr)
      struct type *type;
      struct type **typeptr;
 {
-  register struct type *ntype;         /* New type */
+  register struct type *ntype; /* New type */
   struct objfile *objfile;
 
   ntype = TYPE_REFERENCE_TYPE (type);
 
-  if (ntype) 
+  if (ntype)
     {
-      if (typeptr == 0)                
-        return ntype;  /* Don't care about alloc, and have new type.  */
+      if (typeptr == 0)
+       return ntype;           /* Don't care about alloc, and have new type.  */
       else if (*typeptr == 0)
-        {
+       {
          *typeptr = ntype;     /* Tracking alloc, and we have new type.  */
          return ntype;
-        }
+       }
     }
 
   if (typeptr == 0 || *typeptr == 0)   /* We'll need to allocate one.  */
@@ -215,7 +221,8 @@ make_reference_type (type, typeptr)
       if (typeptr)
        *typeptr = ntype;
     }
-  else                         /* We have storage, but need to reset it.  */
+  else
+    /* We have storage, but need to reset it.  */
     {
       ntype = *typeptr;
       objfile = TYPE_OBJFILE (ntype);
@@ -231,7 +238,7 @@ make_reference_type (type, typeptr)
 
   TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
   TYPE_CODE (ntype) = TYPE_CODE_REF;
-  
+
   if (!TYPE_REFERENCE_TYPE (type))     /* Remember it, if don't have one.  */
     TYPE_REFERENCE_TYPE (type) = ntype;
 
@@ -244,7 +251,7 @@ struct type *
 lookup_reference_type (type)
      struct type *type;
 {
-  return make_reference_type (type, (struct type **)0);
+  return make_reference_type (type, (struct type **) 0);
 }
 
 /* Lookup a function type that returns type TYPE.  TYPEPTR, if nonzero, points
@@ -257,7 +264,7 @@ make_function_type (type, typeptr)
      struct type *type;
      struct type **typeptr;
 {
-  register struct type *ntype;         /* New type */
+  register struct type *ntype; /* New type */
   struct objfile *objfile;
 
   if (typeptr == 0 || *typeptr == 0)   /* We'll need to allocate one.  */
@@ -266,7 +273,8 @@ make_function_type (type, typeptr)
       if (typeptr)
        *typeptr = ntype;
     }
-  else                         /* We have storage, but need to reset it.  */
+  else
+    /* We have storage, but need to reset it.  */
     {
       ntype = *typeptr;
       objfile = TYPE_OBJFILE (ntype);
@@ -278,7 +286,7 @@ make_function_type (type, typeptr)
 
   TYPE_LENGTH (ntype) = 1;
   TYPE_CODE (ntype) = TYPE_CODE_FUNC;
-  
+
   return ntype;
 }
 
@@ -290,7 +298,7 @@ struct type *
 lookup_function_type (type)
      struct type *type;
 {
-  return make_function_type (type, (struct type **)0);
+  return make_function_type (type, (struct type **) 0);
 }
 
 
@@ -311,8 +319,8 @@ make_cv_type (cnst, voltl, type, typeptr)
      struct type *type;
      struct type **typeptr;
 {
-  register struct type *ntype;          /* New type */
-  register struct type *tmp_type = type; /* tmp type */
+  register struct type *ntype; /* New type */
+  register struct type *tmp_type = type;       /* tmp type */
   struct objfile *objfile;
 
   ntype = TYPE_CV_TYPE (type);
@@ -320,16 +328,16 @@ make_cv_type (cnst, voltl, type, typeptr)
   while (ntype != type)
     {
       if ((TYPE_CONST (ntype) == cnst) &&
-          (TYPE_VOLATILE (ntype) == voltl))
-          {
-            if (typeptr == 0)
-              return ntype;
-            else if (*typeptr == 0)
-              {
-                *typeptr = ntype;      /* Tracking alloc, and we have new type.  */
-                return ntype;
-              }
-          }
+         (TYPE_VOLATILE (ntype) == voltl))
+       {
+         if (typeptr == 0)
+           return ntype;
+         else if (*typeptr == 0)
+           {
+             *typeptr = ntype; /* Tracking alloc, and we have new type.  */
+             return ntype;
+           }
+       }
       tmp_type = ntype;
       ntype = TYPE_CV_TYPE (ntype);
     }
@@ -340,7 +348,8 @@ make_cv_type (cnst, voltl, type, typeptr)
       if (typeptr)
        *typeptr = ntype;
     }
-  else                         /* We have storage, but need to reset it.  */
+  else
+    /* We have storage, but need to reset it.  */
     {
       ntype = *typeptr;
       objfile = TYPE_OBJFILE (ntype);
@@ -348,23 +357,23 @@ make_cv_type (cnst, voltl, type, typeptr)
       TYPE_OBJFILE (ntype) = objfile;
     }
 
-  /* Copy original type */ 
+  /* Copy original type */
   memcpy ((char *) ntype, (char *) type, sizeof (struct type));
   /* But zero out fields that shouldn't be copied */
-  TYPE_POINTER_TYPE (ntype) = (struct type *) 0;    /* Need new pointer kind */
-  TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;  /* Need new referene kind */
+  TYPE_POINTER_TYPE (ntype) = (struct type *) 0;       /* Need new pointer kind */
+  TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;     /* Need new referene kind */
   /* Note: TYPE_TARGET_TYPE can be left as is */
 
   /* Set flags appropriately */
   if (cnst)
-    TYPE_FLAGS (ntype) |=  TYPE_FLAG_CONST;
+    TYPE_FLAGS (ntype) |= TYPE_FLAG_CONST;
   else
-    TYPE_FLAGS (ntype) &=  ~TYPE_FLAG_CONST;
+    TYPE_FLAGS (ntype) &= ~TYPE_FLAG_CONST;
 
   if (voltl)
-    TYPE_FLAGS (ntype) |=  TYPE_FLAG_VOLATILE;
+    TYPE_FLAGS (ntype) |= TYPE_FLAG_VOLATILE;
   else
-    TYPE_FLAGS (ntype) &=  ~TYPE_FLAG_VOLATILE;
+    TYPE_FLAGS (ntype) &= ~TYPE_FLAG_VOLATILE;
 
   /* Fix the chain of cv variants */
   TYPE_CV_TYPE (ntype) = type;
@@ -447,10 +456,10 @@ create_range_type (result_type, index_type, low_bound, high_bound)
   memset (TYPE_FIELDS (result_type), 0, 2 * sizeof (struct field));
   TYPE_FIELD_BITPOS (result_type, 0) = low_bound;
   TYPE_FIELD_BITPOS (result_type, 1) = high_bound;
-  TYPE_FIELD_TYPE (result_type, 0) = builtin_type_int;         /* FIXME */
-  TYPE_FIELD_TYPE (result_type, 1) = builtin_type_int;         /* FIXME */
+  TYPE_FIELD_TYPE (result_type, 0) = builtin_type_int; /* FIXME */
+  TYPE_FIELD_TYPE (result_type, 1) = builtin_type_int; /* FIXME */
 
-  if(low_bound >= 0)
+  if (low_bound >= 0)
     TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED;
 
   return (result_type);
@@ -489,7 +498,7 @@ get_discrete_bounds (type, lowp, highp)
            }
 
          /* Set unsigned indicator if warranted. */
-         if(*lowp >= 0)
+         if (*lowp >= 0)
            {
              TYPE_FLAGS (type) |= TYPE_FLAG_UNSIGNED;
            }
@@ -505,11 +514,11 @@ get_discrete_bounds (type, lowp, highp)
       *highp = 1;
       return 0;
     case TYPE_CODE_INT:
-      if (TYPE_LENGTH (type) > sizeof (LONGEST))  /* Too big */
+      if (TYPE_LENGTH (type) > sizeof (LONGEST))       /* Too big */
        return -1;
       if (!TYPE_UNSIGNED (type))
        {
-         *lowp = - (1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
+         *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
          *highp = -*lowp - 1;
          return 0;
        }
@@ -517,8 +526,8 @@ get_discrete_bounds (type, lowp, highp)
     case TYPE_CODE_CHAR:
       *lowp = 0;
       /* This round-about calculation is to avoid shifting by
-        TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
-        if TYPE_LENGTH (type) == sizeof (LONGEST). */
+         TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
+         if TYPE_LENGTH (type) == sizeof (LONGEST). */
       *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
       *highp = (*highp - 1) | *highp;
       return 0;
@@ -608,7 +617,7 @@ create_set_type (result_type, domain_type)
     TYPE_ALLOC (result_type, 1 * sizeof (struct field));
   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
 
-  if (! (TYPE_FLAGS (domain_type) & TYPE_FLAG_STUB))
+  if (!(TYPE_FLAGS (domain_type) & TYPE_FLAG_STUB))
     {
       if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
        low_bound = high_bound = 0;
@@ -618,7 +627,7 @@ create_set_type (result_type, domain_type)
     }
   TYPE_FIELD_TYPE (result_type, 0) = domain_type;
 
-  if(low_bound >= 0)
+  if (low_bound >= 0)
     TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED;
 
   return (result_type);
@@ -696,22 +705,22 @@ type_name_no_tag (type)
 }
 
 /* Lookup a primitive type named NAME. 
-   Return zero if NAME is not a primitive type.*/
+   Return zero if NAME is not a primitive type. */
 
 struct type *
 lookup_primitive_typename (name)
      char *name;
 {
-   struct type ** const *p;
-
-   for (p = current_language -> la_builtin_type_vector; *p != NULL; p++)
-     {
-       if (STREQ ((**p) -> name, name))
-        {
-          return (**p);
-        }
-     }
-   return (NULL); 
+  struct type **const *p;
+
+  for (p = current_language->la_builtin_type_vector; *p != NULL; p++)
+    {
+      if (STREQ ((**p)->name, name))
+       {
+         return (**p);
+       }
+    }
+  return (NULL);
 }
 
 /* Lookup a typedef or primitive type named NAME,
@@ -807,7 +816,7 @@ lookup_union (name, block)
      struct block *block;
 {
   register struct symbol *sym;
-  struct type * t;
+  struct type *t;
 
   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
                       (struct symtab **) NULL);
@@ -815,7 +824,7 @@ lookup_union (name, block)
   if (sym == NULL)
     error ("No union type named %s.", name);
 
-  t = SYMBOL_TYPE(sym);
+  t = SYMBOL_TYPE (sym);
 
   if (TYPE_CODE (t) == TYPE_CODE_UNION)
     return (t);
@@ -823,8 +832,8 @@ lookup_union (name, block)
   /* C++ unions may come out with TYPE_CODE_CLASS, but we look at
    * a further "declared_type" field to discover it is really a union.
    */
-  if (HAVE_CPLUS_STRUCT (t)) 
-    if (TYPE_DECLARED_TYPE(t) == DECLARED_TYPE_UNION) 
+  if (HAVE_CPLUS_STRUCT (t))
+    if (TYPE_DECLARED_TYPE (t) == DECLARED_TYPE_UNION)
       return (t);
 
   /* If we get here, it's not a union */
@@ -842,7 +851,7 @@ lookup_enum (name, block)
 {
   register struct symbol *sym;
 
-  sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0, 
+  sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
                       (struct symtab **) NULL);
   if (sym == NULL)
     {
@@ -865,13 +874,13 @@ lookup_template_type (name, type, block)
      struct block *block;
 {
   struct symbol *sym;
-  char *nam = (char*) alloca(strlen(name) + strlen(type->name) + 4);
+  char *nam = (char *) alloca (strlen (name) + strlen (type->name) + 4);
   strcpy (nam, name);
   strcat (nam, "<");
   strcat (nam, type->name);
-  strcat (nam, " >");  /* FIXME, extra space still introduced in gcc? */
+  strcat (nam, " >");          /* FIXME, extra space still introduced in gcc? */
 
-  sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **)NULL);
+  sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **) NULL);
 
   if (sym == NULL)
     {
@@ -898,7 +907,7 @@ struct type *
 lookup_struct_elt_type (type, name, noerr)
      struct type *type;
      char *name;
-    int noerr;
+     int noerr;
 {
   int i;
 
@@ -961,7 +970,7 @@ lookup_struct_elt_type (type, name, noerr)
     {
       return NULL;
     }
-  
+
   target_terminal_ours ();
   gdb_flush (gdb_stdout);
   fprintf_unfiltered (gdb_stderr, "Type ");
@@ -969,7 +978,7 @@ lookup_struct_elt_type (type, name, noerr)
   fprintf_unfiltered (gdb_stderr, " has no component named ");
   fputs_filtered (name, gdb_stderr);
   error (".");
-  return (struct type *)-1;    /* For lint */
+  return (struct type *) -1;   /* For lint */
 }
 
 /* If possible, make the vptr_fieldno and vptr_basetype fields of TYPE
@@ -990,7 +999,7 @@ fill_in_vptr_fieldno (type)
       int i;
 
       /* We must start at zero in case the first (and only) baseclass is
-        virtual (and hence we cannot share the table pointer).  */
+         virtual (and hence we cannot share the table pointer).  */
       for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
        {
          fill_in_vptr_fieldno (TYPE_BASECLASS (type, i));
@@ -1049,7 +1058,7 @@ get_destructor_fn_field (t, method_indexp, field_indexp)
    often enough to merit such treatment.  */
 
 struct complaint stub_noname_complaint =
-  {"stub type has NULL name", 0, 0};
+{"stub type has NULL name", 0, 0};
 
 struct type *
 check_typedef (type)
@@ -1060,7 +1069,7 @@ check_typedef (type)
     {
       if (!TYPE_TARGET_TYPE (type))
        {
-         charname;
+         char *name;
          struct symbol *sym;
 
          /* It is dangerous to call lookup_symbol if we are currently
@@ -1078,12 +1087,12 @@ check_typedef (type)
              complain (&stub_noname_complaint);
              return type;
            }
-         sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0, 
+         sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0,
                               (struct symtab **) NULL);
          if (sym)
            TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
          else
-           TYPE_TARGET_TYPE (type) = alloc_type (NULL);  /* TYPE_CODE_UNDEF */
+           TYPE_TARGET_TYPE (type) = alloc_type (NULL);        /* TYPE_CODE_UNDEF */
        }
       type = TYPE_TARGET_TYPE (type);
     }
@@ -1091,12 +1100,12 @@ check_typedef (type)
   /* If this is a struct/class/union with no fields, then check whether a
      full definition exists somewhere else.  This is for systems where a
      type definition with no fields is issued for such types, instead of
-     identifying them as stub types in the first place */ 
-     
+     identifying them as stub types in the first place */
+
   if (TYPE_IS_OPAQUE (type) && opaque_type_resolution && !currently_reading_symtab)
     {
-      char * name = type_name_no_tag (type);
-      struct type * newtype;
+      char *name = type_name_no_tag (type);
+      struct type *newtype;
       if (name == NULL)
        {
          complain (&stub_noname_complaint);
@@ -1109,13 +1118,13 @@ check_typedef (type)
        }
     }
   /* Otherwise, rely on the stub flag being set for opaque/stubbed types */
-  else if ((TYPE_FLAGS(type) & TYPE_FLAG_STUB) && ! currently_reading_symtab)
+  else if ((TYPE_FLAGS (type) & TYPE_FLAG_STUB) && !currently_reading_symtab)
     {
-      charname = type_name_no_tag (type);
+      char *name = type_name_no_tag (type);
       /* FIXME: shouldn't we separately check the TYPE_NAME and the
-        TYPE_TAG_NAME, and look in STRUCT_NAMESPACE and/or VAR_NAMESPACE
-        as appropriate?  (this code was written before TYPE_NAME and
-        TYPE_TAG_NAME were separate).  */
+         TYPE_TAG_NAME, and look in STRUCT_NAMESPACE and/or VAR_NAMESPACE
+         as appropriate?  (this code was written before TYPE_NAME and
+         TYPE_TAG_NAME were separate).  */
       struct symbol *sym;
       if (name == NULL)
        {
@@ -1125,7 +1134,7 @@ check_typedef (type)
       sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0, (struct symtab **) NULL);
       if (sym)
        {
-         memcpy ((char *)type, (char *)SYMBOL_TYPE(sym), sizeof (struct type));
+         memcpy ((char *) type, (char *) SYMBOL_TYPE (sym), sizeof (struct type));
        }
     }
 
@@ -1135,7 +1144,8 @@ check_typedef (type)
       struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
 
       if (TYPE_FLAGS (target_type) & (TYPE_FLAG_STUB | TYPE_FLAG_TARGET_STUB))
-       { }
+       {
+       }
       else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
               && TYPE_NFIELDS (type) == 1
               && (TYPE_CODE (range_type = TYPE_FIELD_TYPE (type, 0))
@@ -1166,51 +1176,51 @@ check_typedef (type)
 #define INIT_EXTRA { pextras->len=0; pextras->str[0]='\0'; }
 #define ADD_EXTRA(c) { pextras->str[pextras->len++]=c; }
 
-static void 
-add_name(pextras,n) 
-  struct extra * pextras;
-  char * n; 
+static void
+add_name (pextras, n)
+     struct extra *pextras;
+     char *n;
 {
   int nlen;
 
-  if ((nlen = (n ? strlen(n) : 0))==0) 
+  if ((nlen = (n ? strlen (n) : 0)) == 0)
     return;
-  sprintf(pextras->str+pextras->len,"%d%s",nlen,n);
-  pextras->len=strlen(pextras->str);
+  sprintf (pextras->str + pextras->len, "%d%s", nlen, n);
+  pextras->len = strlen (pextras->str);
 }
 
-static void 
-add_mangled_type(pextras,t) 
-  struct extra * pextras;
-  struct type * t;
+static void
+add_mangled_type (pextras, t)
+     struct extra *pextras;
+     struct type *t;
 {
   enum type_code tcode;
   int tlen, tflags;
-  char * tname;
+  char *tname;
 
-  tcode = TYPE_CODE(t);
-  tlen = TYPE_LENGTH(t);
-  tflags = TYPE_FLAGS(t);
-  tname = TYPE_NAME(t);
+  tcode = TYPE_CODE (t);
+  tlen = TYPE_LENGTH (t);
+  tflags = TYPE_FLAGS (t);
+  tname = TYPE_NAME (t);
   /* args of "..." seem to get mangled as "e" */
 
-  switch (tcode) 
-    {
-      case TYPE_CODE_INT: 
-        if (tflags==1)
-          ADD_EXTRA('U');
-        switch (tlen) 
-          {
-            case 1:
-              ADD_EXTRA('c');
-              break;
-            case 2:
-              ADD_EXTRA('s');
-              break;
-            case 4: 
-              {
-              char* pname;
-              if ((pname=strrchr(tname,'l'),pname) && !strcmp(pname,"long"))
+  switch (tcode)
+    {
+    case TYPE_CODE_INT:
+      if (tflags == 1)
+       ADD_EXTRA ('U');
+      switch (tlen)
+       {
+       case 1:
+         ADD_EXTRA ('c');
+         break;
+       case 2:
+         ADD_EXTRA ('s');
+         break;
+       case 4:
+         {
+           char *pname;
+           if ((pname = strrchr (tname, 'l'), pname) && !strcmp (pname, "long"))
              {
                ADD_EXTRA ('l');
              }
@@ -1218,145 +1228,150 @@ add_mangled_type(pextras,t)
              {
                ADD_EXTRA ('i');
              }
-             }
-              break;
-            default: 
-              {
-          
-                static struct complaint msg = {"Bad int type code length x%x\n",0,0};
-          
-                complain (&msg, tlen);
-          
-              }
-          }
-        break;
-      case TYPE_CODE_FLT: 
-          switch (tlen) 
-            {
-              case 4:
-                ADD_EXTRA('f');
-                break;
-              case 8:
-                ADD_EXTRA('d');
-                break;
-              case 16:
-                ADD_EXTRA('r');
-                break;
-              default: 
-               {
-                  static struct complaint msg = {"Bad float type code length x%x\n",0,0};
-                 complain (&msg, tlen);
-               }
-             }
-            break;
-      case TYPE_CODE_REF:
-        ADD_EXTRA('R');
-        /* followed by what it's a ref to */
-        break;
-      case TYPE_CODE_PTR:
-        ADD_EXTRA('P');
-        /* followed by what it's a ptr to */
-        break;
-      case TYPE_CODE_TYPEDEF: 
-        {
-          static struct complaint msg = {"Typedefs in overloaded functions not yet supported\n",0,0};
-          complain (&msg);
-        }
+         }
+         break;
+       default:
+         {
+
+           static struct complaint msg =
+           {"Bad int type code length x%x\n", 0, 0};
+
+           complain (&msg, tlen);
+
+         }
+       }
+      break;
+    case TYPE_CODE_FLT:
+      switch (tlen)
+       {
+       case 4:
+         ADD_EXTRA ('f');
+         break;
+       case 8:
+         ADD_EXTRA ('d');
+         break;
+       case 16:
+         ADD_EXTRA ('r');
+         break;
+       default:
+         {
+           static struct complaint msg =
+           {"Bad float type code length x%x\n", 0, 0};
+           complain (&msg, tlen);
+         }
+       }
+      break;
+    case TYPE_CODE_REF:
+      ADD_EXTRA ('R');
+      /* followed by what it's a ref to */
+      break;
+    case TYPE_CODE_PTR:
+      ADD_EXTRA ('P');
+      /* followed by what it's a ptr to */
+      break;
+    case TYPE_CODE_TYPEDEF:
+      {
+       static struct complaint msg =
+       {"Typedefs in overloaded functions not yet supported\n", 0, 0};
+       complain (&msg);
+      }
       /* followed by type bytes & name */
       break;
     case TYPE_CODE_FUNC:
-      ADD_EXTRA('F');
+      ADD_EXTRA ('F');
       /* followed by func's arg '_' & ret types */
       break;
     case TYPE_CODE_VOID:
-      ADD_EXTRA('v');
+      ADD_EXTRA ('v');
       break;
     case TYPE_CODE_METHOD:
-      ADD_EXTRA('M');
+      ADD_EXTRA ('M');
       /* followed by name of class and func's arg '_' & ret types */
-      add_name(pextras,tname);
-      ADD_EXTRA('F');  /* then mangle function */
+      add_name (pextras, tname);
+      ADD_EXTRA ('F');         /* then mangle function */
       break;
-    case TYPE_CODE_STRUCT: /* C struct */
-    case TYPE_CODE_UNION:  /* C union */
-    case TYPE_CODE_ENUM:   /* Enumeration type */
+    case TYPE_CODE_STRUCT:     /* C struct */
+    case TYPE_CODE_UNION:      /* C union */
+    case TYPE_CODE_ENUM:       /* Enumeration type */
       /* followed by name of type */
-      add_name(pextras,tname);
+      add_name (pextras, tname);
       break;
 
-    /* errors possible types/not supported */
-    case TYPE_CODE_CHAR:              
-    case TYPE_CODE_ARRAY:  /* Array type */
-    case TYPE_CODE_MEMBER: /* Member type */
+      /* errors possible types/not supported */
+    case TYPE_CODE_CHAR:
+    case TYPE_CODE_ARRAY:      /* Array type */
+    case TYPE_CODE_MEMBER:     /* Member type */
     case TYPE_CODE_BOOL:
-    case TYPE_CODE_COMPLEX:            /* Complex float */
+    case TYPE_CODE_COMPLEX:    /* Complex float */
     case TYPE_CODE_UNDEF:
-    case TYPE_CODE_SET:                /* Pascal sets */
-    case TYPE_CODE_RANGE:  
+    case TYPE_CODE_SET:        /* Pascal sets */
+    case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
     case TYPE_CODE_BITSTRING:
     case TYPE_CODE_ERROR:
-    default: 
+    default:
       {
-        static struct complaint msg = {"Unknown type code x%x\n",0,0};
-        complain (&msg, tcode);
+       static struct complaint msg =
+       {"Unknown type code x%x\n", 0, 0};
+       complain (&msg, tcode);
       }
     }
   if (t->target_type)
-    add_mangled_type(pextras,t->target_type);
+    add_mangled_type (pextras, t->target_type);
 }
 
 #if 0
 void
-cfront_mangle_name(type, i, j)
+cfront_mangle_name (type, i, j)
      struct type *type;
      int i;
      int j;
 {
-   struct fn_field *f;
-   char *mangled_name = gdb_mangle_name (type, i, j);
-
-   f = TYPE_FN_FIELDLIST1 (type, i);   /* moved from below */
-
-   /* kludge to support cfront methods - gdb expects to find "F" for 
-      ARM_mangled names, so when we mangle, we have to add it here */
-   if (ARM_DEMANGLING) 
-     {
-       int k;
-       char * arm_mangled_name;
-       struct fn_field *method = &f[j];
-       char *field_name = TYPE_FN_FIELDLIST_NAME (type, i);
-        char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
-        char *newname = type_name_no_tag (type);
-
-        struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
-       int nargs = TYPE_NFIELDS(ftype);        /* number of args */
-       struct extra extras, * pextras = &extras;       
-       INIT_EXTRA
+  struct fn_field *f;
+  char *mangled_name = gdb_mangle_name (type, i, j);
+
+  f = TYPE_FN_FIELDLIST1 (type, i);    /* moved from below */
+
+  /* kludge to support cfront methods - gdb expects to find "F" for 
+     ARM_mangled names, so when we mangle, we have to add it here */
+  if (ARM_DEMANGLING)
+    {
+      int k;
+      char *arm_mangled_name;
+      struct fn_field *method = &f[j];
+      char *field_name = TYPE_FN_FIELDLIST_NAME (type, i);
+      char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
+      char *newname = type_name_no_tag (type);
+
+      struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
+      int nargs = TYPE_NFIELDS (ftype);                /* number of args */
+      struct extra extras, *pextras = &extras;
+      INIT_EXTRA
 
        if (TYPE_FN_FIELD_STATIC_P (f, j))      /* j for sublist within this list */
-         ADD_EXTRA('S')
-       ADD_EXTRA('F')
+       ADD_EXTRA ('S')
+         ADD_EXTRA ('F')
        /* add args here! */
-       if (nargs <= 1)                         /* no args besides this */
-               ADD_EXTRA('v')
-       else {
-         for (k=1; k<nargs; k++) 
-           {
-             struct type * t;
-             t = TYPE_FIELD_TYPE(ftype,k);
-             add_mangled_type(pextras,t);
-           }
-       }
-       ADD_EXTRA('\0')
-       printf("add_mangled_type: %s\n",extras.str); /* FIXME */
-       arm_mangled_name = malloc(strlen(mangled_name)+extras.len);
-        sprintf(arm_mangled_name,"%s%s",mangled_name,extras.str);
-       free(mangled_name);
-       mangled_name = arm_mangled_name;
-     }
+         if (nargs <= 1)       /* no args besides this */
+         ADD_EXTRA ('v')
+           else
+         {
+           for (k = 1; k < nargs; k++)
+             {
+               struct type *t;
+               t = TYPE_FIELD_TYPE (ftype, k);
+               add_mangled_type (pextras, t);
+             }
+         }
+      ADD_EXTRA ('\0')
+       printf ("add_mangled_type: %s\n", extras.str);  /* FIXME */
+      arm_mangled_name = malloc (strlen (mangled_name) + extras.len);
+      sprintf (arm_mangled_name, "%s%s", mangled_name, extras.str);
+      free (mangled_name);
+      mangled_name = arm_mangled_name;
+    }
 }
-#endif /* 0 */
+#endif /* 0 */
 
 #undef ADD_EXTRA
 /* End of new code added to support parsing of Cfront stabs strings */
@@ -1424,7 +1439,7 @@ check_stub_method (type, method_id, signature_id)
   argtypes[0] = lookup_pointer_type (type);
   argcount = 1;
 
-  if (*p != ')')                       /* () means no args, skip while */
+  if (*p != ')')               /* () means no args, skip while */
     {
       depth = 0;
       while (*p)
@@ -1435,7 +1450,7 @@ check_stub_method (type, method_id, signature_id)
              if (strncmp (argtypetext, "...", p - argtypetext) != 0)
                {
                  argtypes[argcount] =
-                     parse_and_eval_type (argtypetext, p - argtypetext);
+                   parse_and_eval_type (argtypetext, p - argtypetext);
                  argcount += 1;
                }
              argtypetext = p + 1;
@@ -1454,18 +1469,18 @@ check_stub_method (type, method_id, signature_id)
        }
     }
 
-  if (p[-2] != '.')                    /* Not '...' */
+  if (p[-2] != '.')            /* Not '...' */
     {
       argtypes[argcount] = builtin_type_void;  /* List terminator */
     }
   else
     {
-      argtypes[argcount] = NULL;               /* Ellist terminator */
+      argtypes[argcount] = NULL;       /* Ellist terminator */
     }
 
   free (demangled_name);
 
-  f = TYPE_FN_FIELDLIST1 (type, method_id);    
+  f = TYPE_FN_FIELDLIST1 (type, method_id);
 
   TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
 
@@ -1487,7 +1502,7 @@ allocate_cplus_struct_type (type)
     {
       TYPE_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
        TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
-      *(TYPE_CPLUS_SPECIFIC(type)) = cplus_struct_default;
+      *(TYPE_CPLUS_SPECIFIC (type)) = cplus_struct_default;
     }
 }
 
@@ -1515,7 +1530,7 @@ init_type (code, length, flags, name, objfile)
   if ((name != NULL) && (objfile != NULL))
     {
       TYPE_NAME (type) =
-       obsavestring (name, strlen (name), &objfile -> type_obstack);
+       obsavestring (name, strlen (name), &objfile->type_obstack);
     }
   else
     {
@@ -1567,20 +1582,20 @@ lookup_fundamental_type (objfile, typeid)
 
   /* If this is the first time we need a fundamental type for this objfile
      then we need to initialize the vector of type pointers. */
-  
-  if (objfile -> fundamental_types == NULL)
+
+  if (objfile->fundamental_types == NULL)
     {
       nbytes = FT_NUM_MEMBERS * sizeof (struct type *);
-      objfile -> fundamental_types = (struct type **)
-       obstack_alloc (&objfile -> type_obstack, nbytes);
-      memset ((char *) objfile -> fundamental_types, 0, nbytes);
+      objfile->fundamental_types = (struct type **)
+       obstack_alloc (&objfile->type_obstack, nbytes);
+      memset ((char *) objfile->fundamental_types, 0, nbytes);
       OBJSTAT (objfile, n_types += FT_NUM_MEMBERS);
     }
 
   /* Look for this particular type in the fundamental type vector.  If one is
      not found, create and install one appropriate for the current language. */
 
-  typep = objfile -> fundamental_types + typeid;
+  typep = objfile->fundamental_types + typeid;
   if (*typep == NULL)
     {
       *typep = create_fundamental_type (objfile, typeid);
@@ -1626,11 +1641,11 @@ chill_varying_type (type)
 
 int
 is_ancestor (base, dclass)
-  struct type * base;
-  struct type * dclass;
+     struct type *base;
+     struct type *dclass;
 {
   int i;
-  
+
   CHECK_TYPEDEF (base);
   CHECK_TYPEDEF (dclass);
 
@@ -1652,50 +1667,50 @@ is_ancestor (base, dclass)
 
 int
 has_vtable (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
   /* In the HP ANSI C++ runtime model, a class has a vtable only if it
      has virtual functions or virtual bases.  */
 
   register int i;
 
-  if (TYPE_CODE(dclass) != TYPE_CODE_CLASS)
+  if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
     return 0;
-  
+
   /* First check for the presence of virtual bases */
-  if (TYPE_FIELD_VIRTUAL_BITS(dclass))
-    for (i=0; i < TYPE_N_BASECLASSES(dclass); i++)
-      if (B_TST(TYPE_FIELD_VIRTUAL_BITS(dclass), i))
-        return 1;
-  
+  if (TYPE_FIELD_VIRTUAL_BITS (dclass))
+    for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
+      if (B_TST (TYPE_FIELD_VIRTUAL_BITS (dclass), i))
+       return 1;
+
   /* Next check for virtual functions */
-  if (TYPE_FN_FIELDLISTS(dclass))
-    for (i=0; i < TYPE_NFN_FIELDS(dclass); i++)
-      if (TYPE_FN_FIELD_VIRTUAL_P(TYPE_FN_FIELDLIST1(dclass, i), 0))
-        return 1;
-
-  /* Recurse on non-virtual bases to see if any of them needs a vtable */ 
-  if (TYPE_FIELD_VIRTUAL_BITS(dclass))
-    for (i=0; i < TYPE_N_BASECLASSES(dclass); i++)
-      if ((!B_TST (TYPE_FIELD_VIRTUAL_BITS(dclass), i)) &&
-         (has_vtable (TYPE_FIELD_TYPE(dclass, i))))
+  if (TYPE_FN_FIELDLISTS (dclass))
+    for (i = 0; i < TYPE_NFN_FIELDS (dclass); i++)
+      if (TYPE_FN_FIELD_VIRTUAL_P (TYPE_FN_FIELDLIST1 (dclass, i), 0))
        return 1;
-  
-  /* Well, maybe we don't need a virtual table */ 
+
+  /* Recurse on non-virtual bases to see if any of them needs a vtable */
+  if (TYPE_FIELD_VIRTUAL_BITS (dclass))
+    for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
+      if ((!B_TST (TYPE_FIELD_VIRTUAL_BITS (dclass), i)) &&
+         (has_vtable (TYPE_FIELD_TYPE (dclass, i))))
+       return 1;
+
+  /* Well, maybe we don't need a virtual table */
   return 0;
 }
 
 /* Return a pointer to the "primary base class" of DCLASS.
+
    A NULL return indicates that DCLASS has no primary base, or that it
    couldn't be found (insufficient information).
-  
+
    This routine is aimed at the HP/Taligent ANSI C++ runtime model,
    and may not work with other runtime models.  */
 
 struct type *
 primary_base_class (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
   /* In HP ANSI C++'s runtime model, a "primary base class" of a class
      is the first directly inherited, non-virtual base class that
@@ -1703,70 +1718,70 @@ primary_base_class (dclass)
 
   register int i;
 
-  if (TYPE_CODE(dclass) != TYPE_CODE_CLASS)
+  if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
     return NULL;
 
-  for (i=0; i < TYPE_N_BASECLASSES(dclass); i++)
-    if (!TYPE_FIELD_VIRTUAL(dclass, i) &&
-        has_vtable(TYPE_FIELD_TYPE(dclass, i)))
-      return TYPE_FIELD_TYPE(dclass, i);
+  for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
+    if (!TYPE_FIELD_VIRTUAL (dclass, i) &&
+       has_vtable (TYPE_FIELD_TYPE (dclass, i)))
+      return TYPE_FIELD_TYPE (dclass, i);
 
   return NULL;
 }
 
 /* Global manipulated by virtual_base_list[_aux]() */
 
-static struct vbase * current_vbase_list = NULL;
+static struct vbase *current_vbase_list = NULL;
 
 /* Return a pointer to a null-terminated list of struct vbase
    items. The vbasetype pointer of each item in the list points to the
    type information for a virtual base of the argument DCLASS.
-  
+
    Helper function for virtual_base_list(). 
    Note: the list goes backward, right-to-left. virtual_base_list()
    copies the items out in reverse order.  */
 
 static void
 virtual_base_list_aux (dclass)
-     struct type * dclass;
+     struct type *dclass;
 {
-  struct vbase * tmp_vbase;
+  struct vbase *tmp_vbase;
   register int i;
 
-  if (TYPE_CODE(dclass) != TYPE_CODE_CLASS)
+  if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
     return;
 
   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
     {
       /* Recurse on this ancestor, first */
-      virtual_base_list_aux(TYPE_FIELD_TYPE(dclass, i));
+      virtual_base_list_aux (TYPE_FIELD_TYPE (dclass, i));
 
       /* If this current base is itself virtual, add it to the list */
-      if (BASETYPE_VIA_VIRTUAL(dclass, i))
-        {
-          struct type * basetype = TYPE_FIELD_TYPE (dclass, i);
-          
-          /* Check if base already recorded */
-          tmp_vbase = current_vbase_list;
-          while (tmp_vbase)
-            {
-              if (tmp_vbase->vbasetype == basetype)
-                break; /* found it */
-              tmp_vbase = tmp_vbase->next;
-            }
-
-          if (!tmp_vbase) /* normal exit from loop */
-            {
-              /* Allocate new item for this virtual base */
-              tmp_vbase = (struct vbase *) xmalloc (sizeof (struct vbase));
-
-              /* Stick it on at the end of the list */
-              tmp_vbase->vbasetype = basetype;
-              tmp_vbase->next = current_vbase_list;
-              current_vbase_list = tmp_vbase;
-            }
-        } /* if virtual */
-    } /* for loop over bases */
+      if (BASETYPE_VIA_VIRTUAL (dclass, i))
+       {
+         struct type *basetype = TYPE_FIELD_TYPE (dclass, i);
+
+         /* Check if base already recorded */
+         tmp_vbase = current_vbase_list;
+         while (tmp_vbase)
+           {
+             if (tmp_vbase->vbasetype == basetype)
+               break;          /* found it */
+             tmp_vbase = tmp_vbase->next;
+           }
+
+         if (!tmp_vbase)       /* normal exit from loop */
+           {
+             /* Allocate new item for this virtual base */
+             tmp_vbase = (struct vbase *) xmalloc (sizeof (struct vbase));
+
+             /* Stick it on at the end of the list */
+             tmp_vbase->vbasetype = basetype;
+             tmp_vbase->next = current_vbase_list;
+             current_vbase_list = tmp_vbase;
+           }
+       }                       /* if virtual */
+    }                          /* for loop over bases */
 }
 
 
@@ -1774,38 +1789,38 @@ virtual_base_list_aux (dclass)
    bases are laid out in the object's memory area in order of their
    occurrence in a depth-first, left-to-right search through the
    ancestors.
-  
+
    Argument DCLASS is the type whose virtual bases are required.
    Return value is the address of a null-terminated array of pointers
    to struct type items.
-   
+
    This routine is aimed at the HP/Taligent ANSI C++ runtime model,
    and may not work with other runtime models.
-  
+
    This routine merely hands off the argument to virtual_base_list_aux()
    and then copies the result into an array to save space.  */
 
 struct type **
 virtual_base_list (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
-  register struct vbase * tmp_vbase;
-  register struct vbase * tmp_vbase_2;
+  register struct vbase *tmp_vbase;
+  register struct vbase *tmp_vbase_2;
   register int i;
   int count;
-  struct type ** vbase_array;
+  struct type **vbase_array;
 
   current_vbase_list = NULL;
-  virtual_base_list_aux(dclass);
+  virtual_base_list_aux (dclass);
 
-  for (i=0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; i++, tmp_vbase = tmp_vbase->next)
+  for (i = 0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; i++, tmp_vbase = tmp_vbase->next)
     /* no body */ ;
 
   count = i;
 
-  vbase_array = (struct type **) xmalloc((count + 1) * sizeof (struct type *));
+  vbase_array = (struct type **) xmalloc ((count + 1) * sizeof (struct type *));
 
-  for (i=count -1, tmp_vbase = current_vbase_list; i >= 0; i--, tmp_vbase = tmp_vbase->next)
+  for (i = count - 1, tmp_vbase = current_vbase_list; i >= 0; i--, tmp_vbase = tmp_vbase->next)
     vbase_array[i] = tmp_vbase->vbasetype;
 
   /* Get rid of constructed chain */
@@ -1813,10 +1828,10 @@ virtual_base_list (dclass)
   while (tmp_vbase)
     {
       tmp_vbase = tmp_vbase->next;
-      free(tmp_vbase_2);
+      free (tmp_vbase_2);
       tmp_vbase_2 = tmp_vbase;
     }
-  
+
   vbase_array[count] = NULL;
   return vbase_array;
 }
@@ -1825,15 +1840,15 @@ virtual_base_list (dclass)
 
 int
 virtual_base_list_length (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
   register int i;
-  register struct vbase * tmp_vbase;
-  
+  register struct vbase *tmp_vbase;
+
   current_vbase_list = NULL;
-  virtual_base_list_aux(dclass);
+  virtual_base_list_aux (dclass);
 
-  for (i=0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; i++, tmp_vbase = tmp_vbase->next)
+  for (i = 0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; i++, tmp_vbase = tmp_vbase->next)
     /* no body */ ;
   return i;
 }
@@ -1844,11 +1859,11 @@ virtual_base_list_length (dclass)
 
 int
 virtual_base_list_length_skip_primaries (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
   register int i;
-  register struct vbase * tmp_vbase;
-  struct type * primary;
+  register struct vbase *tmp_vbase;
+  struct type *primary;
 
   primary = TYPE_RUNTIME_PTR (dclass) ? TYPE_PRIMARY_BASE (dclass) : NULL;
 
@@ -1856,12 +1871,12 @@ virtual_base_list_length_skip_primaries (dclass)
     return virtual_base_list_length (dclass);
 
   current_vbase_list = NULL;
-  virtual_base_list_aux(dclass);
+  virtual_base_list_aux (dclass);
 
-  for (i=0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; tmp_vbase = tmp_vbase->next)
+  for (i = 0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; tmp_vbase = tmp_vbase->next)
     {
       if (virtual_base_index (tmp_vbase->vbasetype, primary) >= 0)
-        continue;
+       continue;
       i++;
     }
   return i;
@@ -1873,24 +1888,24 @@ virtual_base_list_length_skip_primaries (dclass)
    indicates "not found" or a problem.  */
 
 int
-virtual_base_index(base, dclass)
-  struct type * base;
-  struct type * dclass;
+virtual_base_index (base, dclass)
+     struct type *base;
+     struct type *dclass;
 {
-  register struct type * vbase;
+  register struct type *vbase;
   register int i;
 
-  if ((TYPE_CODE(dclass) != TYPE_CODE_CLASS) ||
-      (TYPE_CODE(base) != TYPE_CODE_CLASS))
+  if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS) ||
+      (TYPE_CODE (base) != TYPE_CODE_CLASS))
     return -1;
 
   i = 0;
-  vbase = TYPE_VIRTUAL_BASE_LIST(dclass)[0];
+  vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[0];
   while (vbase)
     {
       if (vbase == base)
-        break;
-      vbase = TYPE_VIRTUAL_BASE_LIST(dclass)[++i];
+       break;
+      vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[++i];
     }
 
   return vbase ? i : -1;
@@ -1905,30 +1920,30 @@ virtual_base_index(base, dclass)
    found" or a problem.  */
 
 int
-virtual_base_index_skip_primaries(base, dclass)
-  struct type * base;
-  struct type * dclass;
+virtual_base_index_skip_primaries (base, dclass)
+     struct type *base;
+     struct type *dclass;
 {
-  register struct type * vbase;
+  register struct type *vbase;
   register int i, j;
-  struct type * primary;
+  struct type *primary;
 
-  if ((TYPE_CODE(dclass) != TYPE_CODE_CLASS) ||
-      (TYPE_CODE(base) != TYPE_CODE_CLASS))
+  if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS) ||
+      (TYPE_CODE (base) != TYPE_CODE_CLASS))
     return -1;
 
-  primary = TYPE_RUNTIME_PTR(dclass) ? TYPE_PRIMARY_BASE(dclass) : NULL;
+  primary = TYPE_RUNTIME_PTR (dclass) ? TYPE_PRIMARY_BASE (dclass) : NULL;
 
   j = -1;
   i = 0;
-  vbase = TYPE_VIRTUAL_BASE_LIST(dclass)[0];
+  vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[0];
   while (vbase)
     {
-      if (!primary || (virtual_base_index_skip_primaries(vbase, primary) < 0))
-        j++;
+      if (!primary || (virtual_base_index_skip_primaries (vbase, primary) < 0))
+       j++;
       if (vbase == base)
-        break;
-      vbase = TYPE_VIRTUAL_BASE_LIST(dclass)[++i];
+       break;
+      vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[++i];
     }
 
   return vbase ? j : -1;
@@ -1940,11 +1955,11 @@ virtual_base_index_skip_primaries(base, dclass)
 
 int
 class_index_in_primary_list (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
-  struct type * pbc; /* primary base class */
+  struct type *pbc;            /* primary base class */
 
-  /* Simply recurse on primary base */ 
+  /* Simply recurse on primary base */
   pbc = TYPE_PRIMARY_BASE (dclass);
   if (pbc)
     return 1 + class_index_in_primary_list (pbc);
@@ -1963,28 +1978,28 @@ class_index_in_primary_list (dclass)
 
 int
 count_virtual_fns (dclass)
-  struct type * dclass;
+     struct type *dclass;
 {
-  int base;     /* index for base classes */
-  int fn, oi;   /* function and overloaded instance indices */
-  
-  int vfuncs;   /* count to return */ 
+  int base;                    /* index for base classes */
+  int fn, oi;                  /* function and overloaded instance indices */
 
-  /* recurse on bases that can share virtual table */ 
-  struct type * pbc = primary_base_class (dclass);
+  int vfuncs;                  /* count to return */
+
+  /* recurse on bases that can share virtual table */
+  struct type *pbc = primary_base_class (dclass);
   if (pbc)
     vfuncs = count_virtual_fns (pbc);
-  
+
   for (fn = 0; fn < TYPE_NFN_FIELDS (dclass); fn++)
     for (oi = 0; oi < TYPE_FN_FIELDLIST_LENGTH (dclass, fn); oi++)
       if (TYPE_FN_FIELD_VIRTUAL_P (TYPE_FN_FIELDLIST1 (dclass, fn), oi))
-        vfuncs++;
+       vfuncs++;
 
   return vfuncs;
 }
-
 \f
 
+
 /* Functions for overload resolution begin here */
 
 /* Compare two badness vectors A and B and return the result.
@@ -1995,41 +2010,42 @@ count_virtual_fns (dclass)
 
 int
 compare_badness (a, b)
-  struct badness_vector * a;
-  struct badness_vector * b;
+     struct badness_vector *a;
+     struct badness_vector *b;
 {
   int i;
   int tmp;
-  short found_pos = 0;      /* any positives in c? */
-  short found_neg = 0;      /* any negatives in c? */
-  
-  /* differing lengths => incomparable */ 
+  short found_pos = 0;         /* any positives in c? */
+  short found_neg = 0;         /* any negatives in c? */
+
+  /* differing lengths => incomparable */
   if (a->length != b->length)
     return 1;
 
-  /* Subtract b from a */ 
-  for (i=0; i < a->length; i++)
+  /* Subtract b from a */
+  for (i = 0; i < a->length; i++)
     {
       tmp = a->rank[i] - b->rank[i];
       if (tmp > 0)
-        found_pos = 1;
+       found_pos = 1;
       else if (tmp < 0)
-        found_neg = 1;
+       found_neg = 1;
     }
 
   if (found_pos)
     {
       if (found_neg)
-        return 1; /* incomparable */ 
+       return 1;               /* incomparable */
       else
-        return 3; /* A > B */ 
+       return 3;               /* A > B */
     }
-  else /* no positives */ 
+  else
+    /* no positives */
     {
       if (found_neg)
-        return 2; /* A < B */
+       return 2;               /* A < B */
       else
-        return 0; /* A == B */
+       return 0;               /* A == B */
     }
 }
 
@@ -2039,22 +2055,22 @@ compare_badness (a, b)
 
 struct badness_vector *
 rank_function (parms, nparms, args, nargs)
-  struct type ** parms;
-  int nparms;
-  struct type ** args;
-  int nargs;
+     struct type **parms;
+     int nparms;
+     struct type **args;
+     int nargs;
 {
   int i;
-  struct badness_vector * bv;
+  struct badness_vector *bv;
   int min_len = nparms < nargs ? nparms : nargs;
 
   bv = xmalloc (sizeof (struct badness_vector));
-  bv->length = nargs + 1; /* add 1 for the length-match rank */ 
+  bv->length = nargs + 1;      /* add 1 for the length-match rank */
   bv->rank = xmalloc ((nargs + 1) * sizeof (int));
 
   /* First compare the lengths of the supplied lists.
    * If there is a mismatch, set it to a high value. */
-   
+
   /* pai/1997-06-03 FIXME: when we have debug info about default
    * arguments and ellipsis parameter lists, we should consider those
    * and rank the length-match more finely. */
@@ -2062,11 +2078,11 @@ rank_function (parms, nparms, args, nargs)
   LENGTH_MATCH (bv) = (nargs != nparms) ? LENGTH_MISMATCH_BADNESS : 0;
 
   /* Now rank all the parameters of the candidate function */
-  for (i=1; i <= min_len; i++)
-    bv->rank[i] = rank_one_type (parms[i-1], args[i-1]);
+  for (i = 1; i <= min_len; i++)
+    bv->rank[i] = rank_one_type (parms[i - 1], args[i - 1]);
 
-  /* If more arguments than parameters, add dummy entries */ 
-  for (i = min_len +1; i <= nargs; i++)
+  /* If more arguments than parameters, add dummy entries */
+  for (i = min_len + 1; i <= nargs; i++)
     bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
 
   return bv;
@@ -2084,8 +2100,8 @@ rank_function (parms, nparms, args, nargs)
 
 int
 rank_one_type (parm, arg)
-  struct type * parm;
-  struct type * arg;
+     struct type *parm;
+     struct type *arg;
 {
   /* Identical type pointers */
   /* However, this still doesn't catch all cases of same type for arg
@@ -2105,297 +2121,297 @@ rank_one_type (parm, arg)
     return 0;
 
 #if 0
-  /* Debugging only */ 
-  printf("------ Arg is %s [%d], parm is %s [%d]\n",
-         TYPE_NAME (arg), TYPE_CODE (arg), TYPE_NAME (parm), TYPE_CODE (parm));
+  /* Debugging only */
+  printf ("------ Arg is %s [%d], parm is %s [%d]\n",
+      TYPE_NAME (arg), TYPE_CODE (arg), TYPE_NAME (parm), TYPE_CODE (parm));
 #endif
 
   /* x -> y means arg of type x being supplied for parameter of type y */
 
   switch (TYPE_CODE (parm))
     {
-      case TYPE_CODE_PTR:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_PTR: 
-              if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
-                return VOID_PTR_CONVERSION_BADNESS;
-              else
-                return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
-            case TYPE_CODE_ARRAY:
-              return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
-            case TYPE_CODE_FUNC:
-              return rank_one_type (TYPE_TARGET_TYPE (parm), arg);
-            case TYPE_CODE_INT:
-            case TYPE_CODE_ENUM:
-            case TYPE_CODE_CHAR:
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_BOOL:
-              return POINTER_CONVERSION_BADNESS;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-      case TYPE_CODE_ARRAY:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_PTR:
-            case TYPE_CODE_ARRAY:
-              return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-      case TYPE_CODE_FUNC:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_PTR: /* funcptr -> func */
-              return rank_one_type (parm, TYPE_TARGET_TYPE (arg));
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-      case TYPE_CODE_INT:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_INT:
-              if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
-                {
-                  /* Deal with signed, unsigned, and plain chars and
-                     signed and unsigned ints */
-                  if (TYPE_NOSIGN (parm))
-                    {
-                      /* This case only for character types */
-                      if (TYPE_NOSIGN (arg))  /* plain char -> plain char */
-                        return 0;
-                      else
-                        return INTEGER_COERCION_BADNESS; /* signed/unsigned char -> plain char */
-                    }
-                  else if (TYPE_UNSIGNED (parm))
-                    {
-                      if (TYPE_UNSIGNED (arg))
-                        {
-                          if (!strcmp (TYPE_NAME (parm), TYPE_NAME (arg))) 
-                            return 0;  /* unsigned int -> unsigned int, or unsigned long -> unsigned long */
-                          else if (!strcmp (TYPE_NAME (arg), "int") && !strcmp (TYPE_NAME (parm), "long"))
-                            return INTEGER_PROMOTION_BADNESS; /* unsigned int -> unsigned long */
-                          else
-                            return INTEGER_COERCION_BADNESS; /* unsigned long -> unsigned int */ 
-                        }
-                      else
-                        {
-                          if (!strcmp (TYPE_NAME (arg), "long") && !strcmp (TYPE_NAME (parm), "int"))
-                            return INTEGER_COERCION_BADNESS; /* signed long -> unsigned int */
-                          else 
-                            return INTEGER_CONVERSION_BADNESS; /* signed int/long -> unsigned int/long */ 
-                        }
-                    }
-                  else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
-                    {
-                      if (!strcmp (TYPE_NAME (parm), TYPE_NAME (arg)))
-                        return 0;
-                      else if (!strcmp (TYPE_NAME (arg), "int") && !strcmp (TYPE_NAME (parm), "long"))
-                        return INTEGER_PROMOTION_BADNESS;
-                      else
-                        return INTEGER_COERCION_BADNESS;
-                    }
-                  else
-                    return INTEGER_COERCION_BADNESS;
-                }
-              else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
-                return INTEGER_PROMOTION_BADNESS;
-              else
-                return INTEGER_COERCION_BADNESS;
-            case TYPE_CODE_ENUM:
-            case TYPE_CODE_CHAR:
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_BOOL:
-              return INTEGER_PROMOTION_BADNESS;
-            case TYPE_CODE_FLT:
-              return INT_FLOAT_CONVERSION_BADNESS;
-            case TYPE_CODE_PTR:
-              return NS_POINTER_CONVERSION_BADNESS;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_ENUM:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_INT:
-            case TYPE_CODE_CHAR:
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_BOOL:
-            case TYPE_CODE_ENUM:
-              return INTEGER_COERCION_BADNESS;
-            case TYPE_CODE_FLT:
-              return INT_FLOAT_CONVERSION_BADNESS;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_CHAR:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_BOOL:
-            case TYPE_CODE_ENUM:
-              return INTEGER_COERCION_BADNESS;
-            case TYPE_CODE_FLT:
-              return INT_FLOAT_CONVERSION_BADNESS;
-            case TYPE_CODE_INT: 
-              if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
-                return INTEGER_COERCION_BADNESS;
-              else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
-                return INTEGER_PROMOTION_BADNESS;
-              /* >>> !! else fall through !! <<< */ 
-            case TYPE_CODE_CHAR:
-              /* Deal with signed, unsigned, and plain chars for C++
-                 and with int cases falling through from previous case */
-              if (TYPE_NOSIGN (parm))
-                {
-                  if (TYPE_NOSIGN (arg))
-                    return 0;
-                  else
-                    return INTEGER_COERCION_BADNESS;
-                }
-              else if (TYPE_UNSIGNED (parm))
-                {
-                  if (TYPE_UNSIGNED (arg))
-                    return 0;
-                  else
-                    return INTEGER_PROMOTION_BADNESS;
-                }
-              else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
-                return 0;
-              else
-                return INTEGER_COERCION_BADNESS;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_RANGE:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_INT:
-            case TYPE_CODE_CHAR:
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_BOOL:
-            case TYPE_CODE_ENUM:
-              return INTEGER_COERCION_BADNESS;
-            case TYPE_CODE_FLT:
-              return INT_FLOAT_CONVERSION_BADNESS;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_BOOL:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_INT:
-            case TYPE_CODE_CHAR:
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_ENUM:
-            case TYPE_CODE_FLT:
-            case TYPE_CODE_PTR:
-              return BOOLEAN_CONVERSION_BADNESS;
-            case TYPE_CODE_BOOL:
-              return 0;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_FLT:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_FLT:
-              if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
-                return FLOAT_PROMOTION_BADNESS;
-              else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
-                return 0;
-              else
-                return FLOAT_CONVERSION_BADNESS;
-            case TYPE_CODE_INT:
-            case TYPE_CODE_BOOL:
-            case TYPE_CODE_ENUM:
-            case TYPE_CODE_RANGE:
-            case TYPE_CODE_CHAR:
-              return INT_FLOAT_CONVERSION_BADNESS;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_COMPLEX:
-        switch (TYPE_CODE (arg))
-          { /* Strictly not needed for C++, but... */
-            case TYPE_CODE_FLT:
-              return FLOAT_PROMOTION_BADNESS;
-            case TYPE_CODE_COMPLEX:
-              return 0;
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_STRUCT:
+    case TYPE_CODE_PTR:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_PTR:
+         if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
+           return VOID_PTR_CONVERSION_BADNESS;
+         else
+           return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
+       case TYPE_CODE_ARRAY:
+         return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
+       case TYPE_CODE_FUNC:
+         return rank_one_type (TYPE_TARGET_TYPE (parm), arg);
+       case TYPE_CODE_INT:
+       case TYPE_CODE_ENUM:
+       case TYPE_CODE_CHAR:
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_BOOL:
+         return POINTER_CONVERSION_BADNESS;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+    case TYPE_CODE_ARRAY:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_PTR:
+       case TYPE_CODE_ARRAY:
+         return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+    case TYPE_CODE_FUNC:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_PTR:     /* funcptr -> func */
+         return rank_one_type (parm, TYPE_TARGET_TYPE (arg));
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+    case TYPE_CODE_INT:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_INT:
+         if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
+           {
+             /* Deal with signed, unsigned, and plain chars and
+                signed and unsigned ints */
+             if (TYPE_NOSIGN (parm))
+               {
+                 /* This case only for character types */
+                 if (TYPE_NOSIGN (arg))        /* plain char -> plain char */
+                   return 0;
+                 else
+                   return INTEGER_COERCION_BADNESS;    /* signed/unsigned char -> plain char */
+               }
+             else if (TYPE_UNSIGNED (parm))
+               {
+                 if (TYPE_UNSIGNED (arg))
+                   {
+                     if (!strcmp (TYPE_NAME (parm), TYPE_NAME (arg)))
+                       return 0;       /* unsigned int -> unsigned int, or unsigned long -> unsigned long */
+                     else if (!strcmp (TYPE_NAME (arg), "int") && !strcmp (TYPE_NAME (parm), "long"))
+                       return INTEGER_PROMOTION_BADNESS;       /* unsigned int -> unsigned long */
+                     else
+                       return INTEGER_COERCION_BADNESS;        /* unsigned long -> unsigned int */
+                   }
+                 else
+                   {
+                     if (!strcmp (TYPE_NAME (arg), "long") && !strcmp (TYPE_NAME (parm), "int"))
+                       return INTEGER_COERCION_BADNESS;        /* signed long -> unsigned int */
+                     else
+                       return INTEGER_CONVERSION_BADNESS;      /* signed int/long -> unsigned int/long */
+                   }
+               }
+             else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
+               {
+                 if (!strcmp (TYPE_NAME (parm), TYPE_NAME (arg)))
+                   return 0;
+                 else if (!strcmp (TYPE_NAME (arg), "int") && !strcmp (TYPE_NAME (parm), "long"))
+                   return INTEGER_PROMOTION_BADNESS;
+                 else
+                   return INTEGER_COERCION_BADNESS;
+               }
+             else
+               return INTEGER_COERCION_BADNESS;
+           }
+         else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
+           return INTEGER_PROMOTION_BADNESS;
+         else
+           return INTEGER_COERCION_BADNESS;
+       case TYPE_CODE_ENUM:
+       case TYPE_CODE_CHAR:
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_BOOL:
+         return INTEGER_PROMOTION_BADNESS;
+       case TYPE_CODE_FLT:
+         return INT_FLOAT_CONVERSION_BADNESS;
+       case TYPE_CODE_PTR:
+         return NS_POINTER_CONVERSION_BADNESS;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_ENUM:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_INT:
+       case TYPE_CODE_CHAR:
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_BOOL:
+       case TYPE_CODE_ENUM:
+         return INTEGER_COERCION_BADNESS;
+       case TYPE_CODE_FLT:
+         return INT_FLOAT_CONVERSION_BADNESS;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_CHAR:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_BOOL:
+       case TYPE_CODE_ENUM:
+         return INTEGER_COERCION_BADNESS;
+       case TYPE_CODE_FLT:
+         return INT_FLOAT_CONVERSION_BADNESS;
+       case TYPE_CODE_INT:
+         if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
+           return INTEGER_COERCION_BADNESS;
+         else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
+           return INTEGER_PROMOTION_BADNESS;
+         /* >>> !! else fall through !! <<< */
+       case TYPE_CODE_CHAR:
+         /* Deal with signed, unsigned, and plain chars for C++
+            and with int cases falling through from previous case */
+         if (TYPE_NOSIGN (parm))
+           {
+             if (TYPE_NOSIGN (arg))
+               return 0;
+             else
+               return INTEGER_COERCION_BADNESS;
+           }
+         else if (TYPE_UNSIGNED (parm))
+           {
+             if (TYPE_UNSIGNED (arg))
+               return 0;
+             else
+               return INTEGER_PROMOTION_BADNESS;
+           }
+         else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
+           return 0;
+         else
+           return INTEGER_COERCION_BADNESS;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_RANGE:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_INT:
+       case TYPE_CODE_CHAR:
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_BOOL:
+       case TYPE_CODE_ENUM:
+         return INTEGER_COERCION_BADNESS;
+       case TYPE_CODE_FLT:
+         return INT_FLOAT_CONVERSION_BADNESS;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_BOOL:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_INT:
+       case TYPE_CODE_CHAR:
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_ENUM:
+       case TYPE_CODE_FLT:
+       case TYPE_CODE_PTR:
+         return BOOLEAN_CONVERSION_BADNESS;
+       case TYPE_CODE_BOOL:
+         return 0;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_FLT:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_FLT:
+         if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
+           return FLOAT_PROMOTION_BADNESS;
+         else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
+           return 0;
+         else
+           return FLOAT_CONVERSION_BADNESS;
+       case TYPE_CODE_INT:
+       case TYPE_CODE_BOOL:
+       case TYPE_CODE_ENUM:
+       case TYPE_CODE_RANGE:
+       case TYPE_CODE_CHAR:
+         return INT_FLOAT_CONVERSION_BADNESS;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_COMPLEX:
+      switch (TYPE_CODE (arg))
+       {                       /* Strictly not needed for C++, but... */
+       case TYPE_CODE_FLT:
+         return FLOAT_PROMOTION_BADNESS;
+       case TYPE_CODE_COMPLEX:
+         return 0;
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_STRUCT:
       /* currently same as TYPE_CODE_CLASS */
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_STRUCT:
-              /* Check for derivation */
-              if (is_ancestor (parm, arg))
-                return BASE_CONVERSION_BADNESS;
-              /* else fall through */
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_UNION:
-        switch (TYPE_CODE (arg))
-          {
-            case TYPE_CODE_UNION:
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_MEMBER:
-        switch (TYPE_CODE (arg))
-          {
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_METHOD:
-        switch (TYPE_CODE (arg))
-          {
-            
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_REF:
-        switch (TYPE_CODE (arg))
-          {
-            
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-
-        break;
-      case TYPE_CODE_SET:
-        switch (TYPE_CODE (arg))
-          {
-            /* Not in C++ */
-            case TYPE_CODE_SET:
-              return rank_one_type (TYPE_FIELD_TYPE (parm, 0), TYPE_FIELD_TYPE (arg, 0));
-            default:
-              return INCOMPATIBLE_TYPE_BADNESS;
-          }
-        break;
-      case TYPE_CODE_VOID:
-      default:  
-        return INCOMPATIBLE_TYPE_BADNESS;
-    } /* switch (TYPE_CODE (arg)) */
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_STRUCT:
+         /* Check for derivation */
+         if (is_ancestor (parm, arg))
+           return BASE_CONVERSION_BADNESS;
+         /* else fall through */
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_UNION:
+      switch (TYPE_CODE (arg))
+       {
+       case TYPE_CODE_UNION:
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_MEMBER:
+      switch (TYPE_CODE (arg))
+       {
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_METHOD:
+      switch (TYPE_CODE (arg))
+       {
+
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_REF:
+      switch (TYPE_CODE (arg))
+       {
+
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+
+      break;
+    case TYPE_CODE_SET:
+      switch (TYPE_CODE (arg))
+       {
+         /* Not in C++ */
+       case TYPE_CODE_SET:
+         return rank_one_type (TYPE_FIELD_TYPE (parm, 0), TYPE_FIELD_TYPE (arg, 0));
+       default:
+         return INCOMPATIBLE_TYPE_BADNESS;
+       }
+      break;
+    case TYPE_CODE_VOID:
+    default:
+      return INCOMPATIBLE_TYPE_BADNESS;
+    }                          /* switch (TYPE_CODE (arg)) */
 }
 
-/* End of functions for overload resolution */ 
+
+/* End of functions for overload resolution */
 
 static void
 print_bit_vector (bits, nbits)
@@ -2437,7 +2453,7 @@ print_arg_types (args, spaces)
       while (*args != NULL)
        {
          recursive_dump_type (*args, spaces + 2);
-         if ((*args++) -> code == TYPE_CODE_VOID)
+         if ((*args++)->code == TYPE_CODE_VOID)
            {
              break;
            }
@@ -2577,10 +2593,10 @@ recursive_dump_type (type, spaces)
       || (TYPE_CPLUS_SPECIFIC (type) && TYPE_NFN_FIELDS (type) > 0))
     {
       struct type **first_dont_print
-       = (struct type **)obstack_base (&dont_print_type_obstack);
+      = (struct type **) obstack_base (&dont_print_type_obstack);
 
-      int i = (struct type **)obstack_next_free (&dont_print_type_obstack)
-       - first_dont_print;
+      int i = (struct type **) obstack_next_free (&dont_print_type_obstack)
+      - first_dont_print;
 
       while (--i >= 0)
        {
@@ -2613,69 +2629,69 @@ recursive_dump_type (type, spaces)
   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
   switch (TYPE_CODE (type))
     {
-      case TYPE_CODE_UNDEF:
-        printf_filtered ("(TYPE_CODE_UNDEF)");
-       break;
-      case TYPE_CODE_PTR:
-       printf_filtered ("(TYPE_CODE_PTR)");
-       break;
-      case TYPE_CODE_ARRAY:
-       printf_filtered ("(TYPE_CODE_ARRAY)");
-       break;
-      case TYPE_CODE_STRUCT:
-       printf_filtered ("(TYPE_CODE_STRUCT)");
-       break;
-      case TYPE_CODE_UNION:
-       printf_filtered ("(TYPE_CODE_UNION)");
-       break;
-      case TYPE_CODE_ENUM:
-       printf_filtered ("(TYPE_CODE_ENUM)");
-       break;
-      case TYPE_CODE_FUNC:
-       printf_filtered ("(TYPE_CODE_FUNC)");
-       break;
-      case TYPE_CODE_INT:
-       printf_filtered ("(TYPE_CODE_INT)");
-       break;
-      case TYPE_CODE_FLT:
-       printf_filtered ("(TYPE_CODE_FLT)");
-       break;
-      case TYPE_CODE_VOID:
-       printf_filtered ("(TYPE_CODE_VOID)");
-       break;
-      case TYPE_CODE_SET:
-       printf_filtered ("(TYPE_CODE_SET)");
-       break;
-      case TYPE_CODE_RANGE:
-       printf_filtered ("(TYPE_CODE_RANGE)");
-       break;
-      case TYPE_CODE_STRING:
-       printf_filtered ("(TYPE_CODE_STRING)");
-       break;
-      case TYPE_CODE_ERROR:
-       printf_filtered ("(TYPE_CODE_ERROR)");
-       break;
-      case TYPE_CODE_MEMBER:
-       printf_filtered ("(TYPE_CODE_MEMBER)");
-       break;
-      case TYPE_CODE_METHOD:
-       printf_filtered ("(TYPE_CODE_METHOD)");
-       break;
-      case TYPE_CODE_REF:
-       printf_filtered ("(TYPE_CODE_REF)");
-       break;
-      case TYPE_CODE_CHAR:
-       printf_filtered ("(TYPE_CODE_CHAR)");
-       break;
-      case TYPE_CODE_BOOL:
-       printf_filtered ("(TYPE_CODE_BOOL)");
-       break;
-      case TYPE_CODE_TYPEDEF:
-       printf_filtered ("(TYPE_CODE_TYPEDEF)");
-       break;
-      default:
-       printf_filtered ("(UNKNOWN TYPE CODE)");
-       break;
+    case TYPE_CODE_UNDEF:
+      printf_filtered ("(TYPE_CODE_UNDEF)");
+      break;
+    case TYPE_CODE_PTR:
+      printf_filtered ("(TYPE_CODE_PTR)");
+      break;
+    case TYPE_CODE_ARRAY:
+      printf_filtered ("(TYPE_CODE_ARRAY)");
+      break;
+    case TYPE_CODE_STRUCT:
+      printf_filtered ("(TYPE_CODE_STRUCT)");
+      break;
+    case TYPE_CODE_UNION:
+      printf_filtered ("(TYPE_CODE_UNION)");
+      break;
+    case TYPE_CODE_ENUM:
+      printf_filtered ("(TYPE_CODE_ENUM)");
+      break;
+    case TYPE_CODE_FUNC:
+      printf_filtered ("(TYPE_CODE_FUNC)");
+      break;
+    case TYPE_CODE_INT:
+      printf_filtered ("(TYPE_CODE_INT)");
+      break;
+    case TYPE_CODE_FLT:
+      printf_filtered ("(TYPE_CODE_FLT)");
+      break;
+    case TYPE_CODE_VOID:
+      printf_filtered ("(TYPE_CODE_VOID)");
+      break;
+    case TYPE_CODE_SET:
+      printf_filtered ("(TYPE_CODE_SET)");
+      break;
+    case TYPE_CODE_RANGE:
+      printf_filtered ("(TYPE_CODE_RANGE)");
+      break;
+    case TYPE_CODE_STRING:
+      printf_filtered ("(TYPE_CODE_STRING)");
+      break;
+    case TYPE_CODE_ERROR:
+      printf_filtered ("(TYPE_CODE_ERROR)");
+      break;
+    case TYPE_CODE_MEMBER:
+      printf_filtered ("(TYPE_CODE_MEMBER)");
+      break;
+    case TYPE_CODE_METHOD:
+      printf_filtered ("(TYPE_CODE_METHOD)");
+      break;
+    case TYPE_CODE_REF:
+      printf_filtered ("(TYPE_CODE_REF)");
+      break;
+    case TYPE_CODE_CHAR:
+      printf_filtered ("(TYPE_CODE_CHAR)");
+      break;
+    case TYPE_CODE_BOOL:
+      printf_filtered ("(TYPE_CODE_BOOL)");
+      break;
+    case TYPE_CODE_TYPEDEF:
+      printf_filtered ("(TYPE_CODE_TYPEDEF)");
+      break;
+    default:
+      printf_filtered ("(UNKNOWN TYPE CODE)");
+      break;
     }
   puts_filtered ("\n");
   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
@@ -2736,33 +2752,33 @@ recursive_dump_type (type, spaces)
   printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
   switch (TYPE_CODE (type))
     {
-      case TYPE_CODE_METHOD:
-      case TYPE_CODE_FUNC:
-       printfi_filtered (spaces, "arg_types ");
-       gdb_print_address (TYPE_ARG_TYPES (type), gdb_stdout);
-       puts_filtered ("\n");
-       print_arg_types (TYPE_ARG_TYPES (type), spaces);
-       break;
+    case TYPE_CODE_METHOD:
+    case TYPE_CODE_FUNC:
+      printfi_filtered (spaces, "arg_types ");
+      gdb_print_address (TYPE_ARG_TYPES (type), gdb_stdout);
+      puts_filtered ("\n");
+      print_arg_types (TYPE_ARG_TYPES (type), spaces);
+      break;
 
-      case TYPE_CODE_STRUCT:
-       printfi_filtered (spaces, "cplus_stuff ");
-       gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
-       puts_filtered ("\n");
-       print_cplus_stuff (type, spaces);
-       break;
+    case TYPE_CODE_STRUCT:
+      printfi_filtered (spaces, "cplus_stuff ");
+      gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
+      puts_filtered ("\n");
+      print_cplus_stuff (type, spaces);
+      break;
 
-      default:
-       /* We have to pick one of the union types to be able print and test
-          the value.  Pick cplus_struct_type, even though we know it isn't
-          any particular one. */
-       printfi_filtered (spaces, "type_specific ");
-       gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
-       if (TYPE_CPLUS_SPECIFIC (type) != NULL)
-         {
-           printf_filtered (" (unknown data form)");
-         }
-       printf_filtered ("\n");
-       break;
+    default:
+      /* We have to pick one of the union types to be able print and test
+         the value.  Pick cplus_struct_type, even though we know it isn't
+         any particular one. */
+      printfi_filtered (spaces, "type_specific ");
+      gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
+      if (TYPE_CPLUS_SPECIFIC (type) != NULL)
+       {
+         printf_filtered (" (unknown data form)");
+       }
+      printf_filtered ("\n");
+      break;
 
     }
   if (spaces == 0)
@@ -2782,7 +2798,7 @@ build_gdbtypes ()
               0,
               "char", (struct objfile *) NULL);
   TYPE_FLAGS (builtin_type_char) |= TYPE_FLAG_NOSIGN;
-  builtin_type_true_char = 
+  builtin_type_true_char =
     init_type (TYPE_CODE_CHAR, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
               0,
               "true character", (struct objfile *) NULL);
@@ -2822,7 +2838,7 @@ build_gdbtypes ()
     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
               0,
               "long long", (struct objfile *) NULL);
-  builtin_type_unsigned_long_long = 
+  builtin_type_unsigned_long_long =
     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
               TYPE_FLAG_UNSIGNED,
               "unsigned long long", (struct objfile *) NULL);
@@ -2889,9 +2905,9 @@ build_gdbtypes ()
               0,
               "bool", (struct objfile *) NULL);
 
-  /* Add user knob for controlling resolution of opaque types */ 
+  /* Add user knob for controlling resolution of opaque types */
   add_show_from_set
-    (add_set_cmd ("opaque-type-resolution", class_support, var_boolean, (char *)&opaque_type_resolution,
+    (add_set_cmd ("opaque-type-resolution", class_support, var_boolean, (char *) &opaque_type_resolution,
                  "Set resolution of opaque struct/class/union types (if set before loading symbols).",
                  &setlist),
      &showlist);
@@ -2909,31 +2925,31 @@ _initialize_gdbtypes ()
   /* FIXME - For the moment, handle types by swapping them in and out.
      Should be using the per-architecture data-pointer and a large
      struct. */
-  register_gdbarch_swap (&builtin_type_void, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_char, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_short, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_int, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_long, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_long_long, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_signed_char, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_unsigned_char, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_unsigned_short, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_unsigned_int, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_unsigned_long, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_unsigned_long_long, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_float, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_double, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_long_double, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_complex, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_double_complex, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_string, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_int8, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_uint8, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_int16, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_uint16, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_int32, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_uint32, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_int64, sizeof (struct type*), NULL);
-  register_gdbarch_swap (&builtin_type_uint64, sizeof (struct type*), NULL);
+  register_gdbarch_swap (&builtin_type_void, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_char, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_short, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_int, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_long, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_long_long, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_signed_char, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_unsigned_char, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_unsigned_short, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_unsigned_int, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_unsigned_long, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_unsigned_long_long, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_float, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_double, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_long_double, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_complex, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_double_complex, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_string, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_int8, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_uint8, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_int16, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_uint16, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_int32, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_uint32, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_int64, sizeof (struct type *), NULL);
+  register_gdbarch_swap (&builtin_type_uint64, sizeof (struct type *), NULL);
   register_gdbarch_swap (NULL, 0, build_gdbtypes);
 }