FreeBSD/contrib/gcc/cp/call.c
/* Returns true iff standard conversion sequence ICS1 is a proper
   subsequence of ICS2.  */
Returns true iff standard conversion sequence ICS1 is a proper
subsequence of ICS2.
Returns true iff standard conversion sequence ICS1 is a proper subsequence of ICS2 .
static bool
is_subseq (conversion *ics1, conversion *ics2)
{
  while (ics1->kind == ck_rvalue
	 || ics1->kind == ck_lvalue)
    ics1 = ics1->u.next;
  while (1)
    {
      while (ics2->kind == ck_rvalue
	     || ics2->kind == ck_lvalue)
	ics2 = ics2->u.next;
      if (ics2->kind == ck_user
	  || ics2->kind == ck_ambig
	  || ics2->kind == ck_identity)
	return false;
      ics2 = ics2->u.next;
      if (ics2->kind == ics1->kind
	  && same_type_p (ics2->type, ics1->type)
	  && same_type_p (ics2->u.next->type,
			  ics1->u.next->type))
	return true;
    }
}
static bool is_subseq ( conversion * ics1 , conversion * ics2 ) { while ( ics1 -> kind == ck_rvalue || ics1 -> kind == ck_lvalue ) ics1 = ics1 -> u . next ; while ( 1 ) { while ( ics2 -> kind == ck_rvalue || ics2 -> kind == ck_lvalue ) ics2 = ics2 -> u . next ; if ( ics2 -> kind == ck_user || ics2 -> kind == ck_ambig || ics2 -> kind == ck_identity ) return false ; ics2 = ics2 -> u . next ; if ( ics2 -> kind == ics1 -> kind && same_type_p ( ics2 -> type , ics1 -> type ) && same_type_p ( ics2 -> u . next -> type , ics1 -> u . next -> type ) ) return true ; } }
Returns true iff standard conversion sequence ICS1 is a proper
subsequence of ICS2.
Returns true iff standard conversion sequence ICS1 is a proper subsequence of ICS2 .
/* We can assume that a conversion of the same code
     between the same types indicates a subsequence since we only get
     here if the types we are converting from are the same.  */ /* At this point, ICS1 cannot be a proper subsequence of
	   ICS2.  We can get a USER_CONV when we are comparing the
	   second standard conversion sequence of two user conversion
	   sequences.  */