f2->type)))
f2->type, NULL)))
debug_class_type_samep (info, t1, t2)     struct debug_handle *info;     struct debug_type *t1;     struct debug_type *t2;{  struct debug_class_type *c1, *c2;  c1 = t1->u.kclass;  c2 = t2->u.kclass;  if ((c1->fields == NULL) != (c2->fields == NULL)      || (c1->baseclasses == NULL) != (c2->baseclasses == NULL)      || (c1->methods == NULL) != (c2->methods == NULL)      || (c1->vptrbase == NULL) != (c2->vptrbase == NULL))    return false;  if (c1->fields != NULL)    {      struct debug_field **pf1, **pf2;      for (pf1 = c1->fields, pf2 = c2->fields;	   *pf1 != NULL && *pf2 != NULL;	   pf1++, pf2++)	{	  struct debug_field *f1, *f2;	  f1 = *pf1;	  f2 = *pf2;	  if (f1->name[0] != f2->name[0]	      || f1->visibility != f2->visibility	      || f1->static_member != f2->static_member)	    return false;	  if (f1->static_member)	    {	      if (strcmp (f1->u.s.physname, f2->u.s.physname) != 0)		return false;	    }	  else	    {	      if (f1->u.f.bitpos != f2->u.f.bitpos		  || f1->u.f.bitsize != f2->u.f.bitsize)		return false;	    }	  /* We do the checks which require function calls last.  We             don't require that the types of fields have the same             names, since that sometimes fails in the presence of             typedefs and we really don't care.  */	  if (strcmp (f1->name, f2->name) != 0	      || ! debug_type_samep (info,				     debug_get_real_type ((PTR) info,							  f1->type),				     debug_get_real_type ((PTR) info,							  f2->type)))	    return false;	}      if (*pf1 != NULL || *pf2 != NULL)	return false;    }  if (c1->vptrbase != NULL)    {      if (! debug_type_samep (info, c1->vptrbase, c2->vptrbase))	return false;    }  if (c1->baseclasses != NULL)    {      struct debug_baseclass **pb1, **pb2;      for (pb1 = c1->baseclasses, pb2 = c2->baseclasses;	   *pb1 != NULL && *pb2 != NULL;	   ++pb1, ++pb2)	{	  struct debug_baseclass *b1, *b2;	  b1 = *pb1;	  b2 = *pb2;	  if (b1->bitpos != b2->bitpos	      || b1->virtual != b2->virtual	      || b1->visibility != b2->visibility	      || ! debug_type_samep (info, b1->type, b2->type))	    return false;	}      if (*pb1 != NULL || *pb2 != NULL)	return false;    }  if (c1->methods != NULL)    {      struct debug_method **pm1, **pm2;      for (pm1 = c1->methods, pm2 = c2->methods;	   *pm1 != NULL && *pm2 != NULL;	   ++pm1, ++pm2)	{	  struct debug_method *m1, *m2;	  m1 = *pm1;	  m2 = *pm2;	  if (m1->name[0] != m2->name[0]	      || strcmp (m1->name, m2->name) != 0	      || (m1->variants == NULL) != (m2->variants == NULL))	    return false;	  if (m1->variants == NULL)	    {	      struct debug_method_variant **pv1, **pv2;	      for (pv1 = m1->variants, pv2 = m2->variants;		   *pv1 != NULL && *pv2 != NULL;		   ++pv1, ++pv2)		{		  struct debug_method_variant *v1, *v2;		  v1 = *pv1;		  v2 = *pv2;		  if (v1->physname[0] != v2->physname[0]		      || v1->visibility != v2->visibility		      || v1->constp != v2->constp		      || v1->volatilep != v2->volatilep		      || v1->voffset != v2->voffset		      || (v1->context == NULL) != (v2->context == NULL)		      || strcmp (v1->physname, v2->physname) != 0		      || ! debug_type_samep (info, v1->type, v2->type))		    return false;		  if (v1->context != NULL)		    {		      if (! debug_type_samep (info, v1->context,					      v2->context))			return false;		    }		}	      if (*pv1 != NULL || *pv2 != NULL)		return false;	    }	}      if (*pm1 != NULL || *pm2 != NULL)	return false;    }  return true;}