contrib/gcc-4.4/gcc/cp/call.c
/* Perform overload resolution on FN, which is called with the ARGS.

   Return the candidate function selected by overload resolution, or
   NULL if the event that overload resolution failed.  In the case
   that overload resolution fails, *CANDIDATES will be the set of
   candidates considered, and ANY_VIABLE_P will be set to true or
   false to indicate whether or not any of the candidates were
   viable.

   The ARGS should already have gone through RESOLVE_ARGS before this
   function is called.  */
Perform overload resolution on FN, which is called with the ARGS.
Return the candidate function selected by overload resolution, or
NULL if the event that overload resolution failed.  In the case
that overload resolution fails, *CANDIDATES will be the set of
candidates considered, and ANY_VIABLE_P will be set to true or
false to indicate whether or not any of the candidates were
viable.

The ARGS should already have gone through RESOLVE_ARGS before this
function is called.
Perform overload resolution on FN which is called with the ARGS . Return the candidate function selected by overload resolution or NULL if the event that overload resolution failed . In the case that overload resolution fails * CANDIDATES will be the set of candidates considered and ANY_VIABLE_P will be set to true or false to indicate whether or not any of the candidates were viable . The ARGS should already have gone through RESOLVE_ARGS before this function is called .
static struct z_candidate *
perform_overload_resolution (tree fn,
			     tree args,
			     struct z_candidate **candidates,
			     bool *any_viable_p)
{
  struct z_candidate *cand;
  tree explicit_targs = NULL_TREE;
  int template_only = 0;
  *candidates = NULL;
  *any_viable_p = true;
  gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
	      || TREE_CODE (fn) == TEMPLATE_DECL
	      || TREE_CODE (fn) == OVERLOAD
	      || TREE_CODE (fn) == TEMPLATE_ID_EXPR);
  gcc_assert (!args || TREE_CODE (args) == TREE_LIST);
  if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
    {
      explicit_targs = TREE_OPERAND (fn, 1);
      fn = TREE_OPERAND (fn, 0);
      template_only = 1;
    }
  add_candidates (fn, args, explicit_targs, template_only,
		  NULL_TREE,
		  NULL_TREE,
		  LOOKUP_NORMAL,
		  candidates);
  *candidates = splice_viable (*candidates, pedantic, any_viable_p);
  if (!*any_viable_p)
    return NULL;
  cand = tourney (*candidates);
  return cand;
}
static struct z_candidate * perform_overload_resolution ( tree fn , tree args , struct z_candidate * * candidates , bool * any_viable_p ) { struct z_candidate * cand ; tree explicit_targs = NULL_TREE ; int template_only = 0 ; * candidates = NULL ; * any_viable_p = true ; gcc_assert ( TREE_CODE ( fn ) == FUNCTION_DECL || TREE_CODE ( fn ) == TEMPLATE_DECL || TREE_CODE ( fn ) == OVERLOAD || TREE_CODE ( fn ) == TEMPLATE_ID_EXPR ) ; gcc_assert ( ! args || TREE_CODE ( args ) == TREE_LIST ) ; if ( TREE_CODE ( fn ) == TEMPLATE_ID_EXPR ) { explicit_targs = TREE_OPERAND ( fn , 1 ) ; fn = TREE_OPERAND ( fn , 0 ) ; template_only = 1 ; } add_candidates ( fn , args , explicit_targs , template_only , NULL_TREE , NULL_TREE , LOOKUP_NORMAL , candidates ) ; * candidates = splice_viable ( * candidates , pedantic , any_viable_p ) ; if ( ! * any_viable_p ) return NULL ; cand = tourney ( * candidates ) ; return cand ; }
Perform overload resolution on FN, which is called with the ARGS.
Perform overload resolution on FN which is called with the ARGS .
/* Check FN and ARGS.  */ /* Add the various candidate functions.  */ /*conversion_path=*/ /*access_path=*/