1 /* Functions related to invoking methods and overloaded functions.
2 Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
4 Free Software Foundation, Inc.
5 Contributed by Michael Tiemann (tiemann@cygnus.com) and
6 modified by Brendan Kehoe (brendan@cygnus.com).
8 This file is part of GCC.
10 GCC is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3, or (at your option)
15 GCC is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with GCC; see the file COPYING3. If not see
22 <http://www.gnu.org/licenses/>. */
25 /* High-level class interface. */
29 #include "coretypes.h"
38 #include "diagnostic.h"
42 #include "langhooks.h"
44 /* The various kinds of conversion. */
46 typedef enum conversion_kind {
62 /* The rank of the conversion. Order of the enumerals matters; better
63 conversions should come earlier in the list. */
65 typedef enum conversion_rank {
76 /* An implicit conversion sequence, in the sense of [over.best.ics].
77 The first conversion to be performed is at the end of the chain.
78 That conversion is always a cr_identity conversion. */
80 typedef struct conversion conversion;
82 /* The kind of conversion represented by this step. */
84 /* The rank of this conversion. */
86 BOOL_BITFIELD user_conv_p : 1;
87 BOOL_BITFIELD ellipsis_p : 1;
88 BOOL_BITFIELD this_p : 1;
89 BOOL_BITFIELD bad_p : 1;
90 /* If KIND is ck_ref_bind ck_base_conv, true to indicate that a
91 temporary should be created to hold the result of the
93 BOOL_BITFIELD need_temporary_p : 1;
94 /* If KIND is ck_ptr or ck_pmem, true to indicate that a conversion
95 from a pointer-to-derived to pointer-to-base is being performed. */
96 BOOL_BITFIELD base_p : 1;
97 /* If KIND is ck_ref_bind, true when either an lvalue reference is
98 being bound to an lvalue expression or an rvalue reference is
99 being bound to an rvalue expression. */
100 BOOL_BITFIELD rvaluedness_matches_p: 1;
101 BOOL_BITFIELD check_narrowing: 1;
102 /* The type of the expression resulting from the conversion. */
105 /* The next conversion in the chain. Since the conversions are
106 arranged from outermost to innermost, the NEXT conversion will
107 actually be performed before this conversion. This variant is
108 used only when KIND is neither ck_identity nor ck_ambig. */
110 /* The expression at the beginning of the conversion chain. This
111 variant is used only if KIND is ck_identity or ck_ambig. */
113 /* The array of conversions for an initializer_list. */
116 /* The function candidate corresponding to this conversion
117 sequence. This field is only used if KIND is ck_user. */
118 struct z_candidate *cand;
121 #define CONVERSION_RANK(NODE) \
122 ((NODE)->bad_p ? cr_bad \
123 : (NODE)->ellipsis_p ? cr_ellipsis \
124 : (NODE)->user_conv_p ? cr_user \
127 static struct obstack conversion_obstack;
128 static bool conversion_obstack_initialized;
130 static struct z_candidate * tourney (struct z_candidate *);
131 static int equal_functions (tree, tree);
132 static int joust (struct z_candidate *, struct z_candidate *, bool);
133 static int compare_ics (conversion *, conversion *);
134 static tree build_over_call (struct z_candidate *, int, tsubst_flags_t);
135 static tree build_java_interface_fn_ref (tree, tree);
136 #define convert_like(CONV, EXPR, COMPLAIN) \
137 convert_like_real ((CONV), (EXPR), NULL_TREE, 0, 0, \
138 /*issue_conversion_warnings=*/true, \
139 /*c_cast_p=*/false, (COMPLAIN))
140 #define convert_like_with_context(CONV, EXPR, FN, ARGNO, COMPLAIN ) \
141 convert_like_real ((CONV), (EXPR), (FN), (ARGNO), 0, \
142 /*issue_conversion_warnings=*/true, \
143 /*c_cast_p=*/false, (COMPLAIN))
144 static tree convert_like_real (conversion *, tree, tree, int, int, bool,
145 bool, tsubst_flags_t);
146 static void op_error (enum tree_code, enum tree_code, tree, tree,
148 static VEC(tree,gc) *resolve_args (VEC(tree,gc) *);
149 static struct z_candidate *build_user_type_conversion_1 (tree, tree, int);
150 static void print_z_candidate (const char *, struct z_candidate *);
151 static void print_z_candidates (struct z_candidate *);
152 static tree build_this (tree);
153 static struct z_candidate *splice_viable (struct z_candidate *, bool, bool *);
154 static bool any_strictly_viable (struct z_candidate *);
155 static struct z_candidate *add_template_candidate
156 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
157 tree, tree, tree, int, unification_kind_t);
158 static struct z_candidate *add_template_candidate_real
159 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
160 tree, tree, tree, int, tree, unification_kind_t);
161 static struct z_candidate *add_template_conv_candidate
162 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
164 static void add_builtin_candidates
165 (struct z_candidate **, enum tree_code, enum tree_code,
167 static void add_builtin_candidate
168 (struct z_candidate **, enum tree_code, enum tree_code,
169 tree, tree, tree, tree *, tree *, int);
170 static bool is_complete (tree);
171 static void build_builtin_candidate
172 (struct z_candidate **, tree, tree, tree, tree *, tree *,
174 static struct z_candidate *add_conv_candidate
175 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
177 static struct z_candidate *add_function_candidate
178 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
180 static conversion *implicit_conversion (tree, tree, tree, bool, int);
181 static conversion *standard_conversion (tree, tree, tree, bool, int);
182 static conversion *reference_binding (tree, tree, tree, bool, int);
183 static conversion *build_conv (conversion_kind, tree, conversion *);
184 static conversion *build_list_conv (tree, tree, int);
185 static bool is_subseq (conversion *, conversion *);
186 static conversion *maybe_handle_ref_bind (conversion **);
187 static void maybe_handle_implicit_object (conversion **);
188 static struct z_candidate *add_candidate
189 (struct z_candidate **, tree, tree, const VEC(tree,gc) *, size_t,
190 conversion **, tree, tree, int);
191 static tree source_type (conversion *);
192 static void add_warning (struct z_candidate *, struct z_candidate *);
193 static bool reference_compatible_p (tree, tree);
194 static conversion *convert_class_to_reference (tree, tree, tree, int);
195 static conversion *direct_reference_binding (tree, conversion *);
196 static bool promoted_arithmetic_type_p (tree);
197 static conversion *conditional_conversion (tree, tree);
198 static char *name_as_c_string (tree, tree, bool *);
199 static tree prep_operand (tree);
200 static void add_candidates (tree, const VEC(tree,gc) *, tree, bool, tree, tree,
201 int, struct z_candidate **);
202 static conversion *merge_conversion_sequences (conversion *, conversion *);
203 static bool magic_varargs_p (tree);
204 static tree build_temp (tree, tree, int, diagnostic_t *);
206 /* Returns nonzero iff the destructor name specified in NAME matches BASETYPE.
207 NAME can take many forms... */
210 check_dtor_name (tree basetype, tree name)
212 /* Just accept something we've already complained about. */
213 if (name == error_mark_node)
216 if (TREE_CODE (name) == TYPE_DECL)
217 name = TREE_TYPE (name);
218 else if (TYPE_P (name))
220 else if (TREE_CODE (name) == IDENTIFIER_NODE)
222 if ((MAYBE_CLASS_TYPE_P (basetype)
223 && name == constructor_name (basetype))
224 || (TREE_CODE (basetype) == ENUMERAL_TYPE
225 && name == TYPE_IDENTIFIER (basetype)))
228 name = get_type_value (name);
234 template <class T> struct S { ~S(); };
238 NAME will be a class template. */
239 gcc_assert (DECL_CLASS_TEMPLATE_P (name));
243 if (!name || name == error_mark_node)
245 return same_type_p (TYPE_MAIN_VARIANT (basetype), TYPE_MAIN_VARIANT (name));
248 /* We want the address of a function or method. We avoid creating a
249 pointer-to-member function. */
252 build_addr_func (tree function)
254 tree type = TREE_TYPE (function);
256 /* We have to do these by hand to avoid real pointer to member
258 if (TREE_CODE (type) == METHOD_TYPE)
260 if (TREE_CODE (function) == OFFSET_REF)
262 tree object = build_address (TREE_OPERAND (function, 0));
263 return get_member_function_from_ptrfunc (&object,
264 TREE_OPERAND (function, 1));
266 function = build_address (function);
269 function = decay_conversion (function);
274 /* Build a CALL_EXPR, we can handle FUNCTION_TYPEs, METHOD_TYPEs, or
275 POINTER_TYPE to those. Note, pointer to member function types
276 (TYPE_PTRMEMFUNC_P) must be handled by our callers. There are
277 two variants. build_call_a is the primitive taking an array of
278 arguments, while build_call_n is a wrapper that handles varargs. */
281 build_call_n (tree function, int n, ...)
284 return build_call_a (function, 0, NULL);
287 tree *argarray = (tree *) alloca (n * sizeof (tree));
292 for (i = 0; i < n; i++)
293 argarray[i] = va_arg (ap, tree);
295 return build_call_a (function, n, argarray);
300 build_call_a (tree function, int n, tree *argarray)
302 int is_constructor = 0;
309 function = build_addr_func (function);
311 gcc_assert (TYPE_PTR_P (TREE_TYPE (function)));
312 fntype = TREE_TYPE (TREE_TYPE (function));
313 gcc_assert (TREE_CODE (fntype) == FUNCTION_TYPE
314 || TREE_CODE (fntype) == METHOD_TYPE);
315 result_type = TREE_TYPE (fntype);
316 /* An rvalue has no cv-qualifiers. */
317 if (SCALAR_TYPE_P (result_type) || VOID_TYPE_P (result_type))
318 result_type = cv_unqualified (result_type);
320 if (TREE_CODE (function) == ADDR_EXPR
321 && TREE_CODE (TREE_OPERAND (function, 0)) == FUNCTION_DECL)
323 decl = TREE_OPERAND (function, 0);
324 if (!TREE_USED (decl))
326 /* We invoke build_call directly for several library
327 functions. These may have been declared normally if
328 we're building libgcc, so we can't just check
330 gcc_assert (DECL_ARTIFICIAL (decl)
331 || !strncmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
339 /* We check both the decl and the type; a function may be known not to
340 throw without being declared throw(). */
341 nothrow = ((decl && TREE_NOTHROW (decl))
342 || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
344 if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain)
345 current_function_returns_abnormally = 1;
347 if (decl && TREE_DEPRECATED (decl))
348 warn_deprecated_use (decl, NULL_TREE);
349 require_complete_eh_spec_types (fntype, decl);
351 if (decl && DECL_CONSTRUCTOR_P (decl))
354 /* Don't pass empty class objects by value. This is useful
355 for tags in STL, which are used to control overload resolution.
356 We don't need to handle other cases of copying empty classes. */
357 if (! decl || ! DECL_BUILT_IN (decl))
358 for (i = 0; i < n; i++)
359 if (is_empty_class (TREE_TYPE (argarray[i]))
360 && ! TREE_ADDRESSABLE (TREE_TYPE (argarray[i])))
362 tree t = build0 (EMPTY_CLASS_EXPR, TREE_TYPE (argarray[i]));
363 argarray[i] = build2 (COMPOUND_EXPR, TREE_TYPE (t),
367 function = build_call_array_loc (input_location,
368 result_type, function, n, argarray);
369 TREE_HAS_CONSTRUCTOR (function) = is_constructor;
370 TREE_NOTHROW (function) = nothrow;
375 /* Build something of the form ptr->method (args)
376 or object.method (args). This can also build
377 calls to constructors, and find friends.
379 Member functions always take their class variable
382 INSTANCE is a class instance.
384 NAME is the name of the method desired, usually an IDENTIFIER_NODE.
386 PARMS help to figure out what that NAME really refers to.
388 BASETYPE_PATH, if non-NULL, contains a chain from the type of INSTANCE
389 down to the real instance type to use for access checking. We need this
390 information to get protected accesses correct.
392 FLAGS is the logical disjunction of zero or more LOOKUP_
393 flags. See cp-tree.h for more info.
395 If this is all OK, calls build_function_call with the resolved
398 This function must also handle being called to perform
399 initialization, promotion/coercion of arguments, and
400 instantiation of default parameters.
402 Note that NAME may refer to an instance variable name. If
403 `operator()()' is defined for the type of that field, then we return
406 /* New overloading code. */
408 typedef struct z_candidate z_candidate;
410 typedef struct candidate_warning candidate_warning;
411 struct candidate_warning {
413 candidate_warning *next;
417 /* The FUNCTION_DECL that will be called if this candidate is
418 selected by overload resolution. */
420 /* If not NULL_TREE, the first argument to use when calling this
423 /* The rest of the arguments to use when calling this function. If
424 there are no further arguments this may be NULL or it may be an
426 const VEC(tree,gc) *args;
427 /* The implicit conversion sequences for each of the arguments to
430 /* The number of implicit conversion sequences. */
432 /* If FN is a user-defined conversion, the standard conversion
433 sequence from the type returned by FN to the desired destination
435 conversion *second_conv;
437 /* If FN is a member function, the binfo indicating the path used to
438 qualify the name of FN at the call site. This path is used to
439 determine whether or not FN is accessible if it is selected by
440 overload resolution. The DECL_CONTEXT of FN will always be a
441 (possibly improper) base of this binfo. */
443 /* If FN is a non-static member function, the binfo indicating the
444 subobject to which the `this' pointer should be converted if FN
445 is selected by overload resolution. The type pointed to the by
446 the `this' pointer must correspond to the most derived class
447 indicated by the CONVERSION_PATH. */
448 tree conversion_path;
450 candidate_warning *warnings;
454 /* Returns true iff T is a null pointer constant in the sense of
458 null_ptr_cst_p (tree t)
462 A null pointer constant is an integral constant expression
463 (_expr.const_) rvalue of integer type that evaluates to zero. */
464 t = integral_constant_value (t);
467 if (CP_INTEGRAL_TYPE_P (TREE_TYPE (t)) && integer_zerop (t))
470 if (!TREE_OVERFLOW (t))
476 /* Returns nonzero if PARMLIST consists of only default parms and/or
480 sufficient_parms_p (const_tree parmlist)
482 for (; parmlist && parmlist != void_list_node;
483 parmlist = TREE_CHAIN (parmlist))
484 if (!TREE_PURPOSE (parmlist))
489 /* Allocate N bytes of memory from the conversion obstack. The memory
490 is zeroed before being returned. */
493 conversion_obstack_alloc (size_t n)
496 if (!conversion_obstack_initialized)
498 gcc_obstack_init (&conversion_obstack);
499 conversion_obstack_initialized = true;
501 p = obstack_alloc (&conversion_obstack, n);
506 /* Dynamically allocate a conversion. */
509 alloc_conversion (conversion_kind kind)
512 c = (conversion *) conversion_obstack_alloc (sizeof (conversion));
517 #ifdef ENABLE_CHECKING
519 /* Make sure that all memory on the conversion obstack has been
523 validate_conversion_obstack (void)
525 if (conversion_obstack_initialized)
526 gcc_assert ((obstack_next_free (&conversion_obstack)
527 == obstack_base (&conversion_obstack)));
530 #endif /* ENABLE_CHECKING */
532 /* Dynamically allocate an array of N conversions. */
535 alloc_conversions (size_t n)
537 return (conversion **) conversion_obstack_alloc (n * sizeof (conversion *));
541 build_conv (conversion_kind code, tree type, conversion *from)
544 conversion_rank rank = CONVERSION_RANK (from);
546 /* Note that the caller is responsible for filling in t->cand for
547 user-defined conversions. */
548 t = alloc_conversion (code);
571 t->user_conv_p = (code == ck_user || from->user_conv_p);
572 t->bad_p = from->bad_p;
577 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, a
578 specialization of std::initializer_list<T>, if such a conversion is
582 build_list_conv (tree type, tree ctor, int flags)
584 tree elttype = TREE_VEC_ELT (CLASSTYPE_TI_ARGS (type), 0);
585 unsigned len = CONSTRUCTOR_NELTS (ctor);
586 conversion **subconvs = alloc_conversions (len);
591 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
594 = implicit_conversion (elttype, TREE_TYPE (val), val,
602 t = alloc_conversion (ck_list);
604 t->u.list = subconvs;
607 for (i = 0; i < len; ++i)
609 conversion *sub = subconvs[i];
610 if (sub->rank > t->rank)
612 if (sub->user_conv_p)
613 t->user_conv_p = true;
621 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, an
622 aggregate class, if such a conversion is possible. */
625 build_aggr_conv (tree type, tree ctor, int flags)
627 unsigned HOST_WIDE_INT i = 0;
629 tree field = TYPE_FIELDS (type);
631 for (; field; field = TREE_CHAIN (field), ++i)
633 if (TREE_CODE (field) != FIELD_DECL)
635 if (i < CONSTRUCTOR_NELTS (ctor))
637 constructor_elt *ce = CONSTRUCTOR_ELT (ctor, i);
638 if (!can_convert_arg (TREE_TYPE (field), TREE_TYPE (ce->value),
642 else if (build_value_init (TREE_TYPE (field)) == error_mark_node)
646 c = alloc_conversion (ck_aggr);
649 c->user_conv_p = true;
654 /* Build a representation of the identity conversion from EXPR to
655 itself. The TYPE should match the type of EXPR, if EXPR is non-NULL. */
658 build_identity_conv (tree type, tree expr)
662 c = alloc_conversion (ck_identity);
669 /* Converting from EXPR to TYPE was ambiguous in the sense that there
670 were multiple user-defined conversions to accomplish the job.
671 Build a conversion that indicates that ambiguity. */
674 build_ambiguous_conv (tree type, tree expr)
678 c = alloc_conversion (ck_ambig);
686 strip_top_quals (tree t)
688 if (TREE_CODE (t) == ARRAY_TYPE)
690 return cp_build_qualified_type (t, 0);
693 /* Returns the standard conversion path (see [conv]) from type FROM to type
694 TO, if any. For proper handling of null pointer constants, you must
695 also pass the expression EXPR to convert from. If C_CAST_P is true,
696 this conversion is coming from a C-style cast. */
699 standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
702 enum tree_code fcode, tcode;
704 bool fromref = false;
706 to = non_reference (to);
707 if (TREE_CODE (from) == REFERENCE_TYPE)
710 from = TREE_TYPE (from);
712 to = strip_top_quals (to);
713 from = strip_top_quals (from);
715 if ((TYPE_PTRFN_P (to) || TYPE_PTRMEMFUNC_P (to))
716 && expr && type_unknown_p (expr))
718 tsubst_flags_t tflags = tf_conv;
719 if (!(flags & LOOKUP_PROTECT))
720 tflags |= tf_no_access_control;
721 expr = instantiate_type (to, expr, tflags);
722 if (expr == error_mark_node)
724 from = TREE_TYPE (expr);
727 fcode = TREE_CODE (from);
728 tcode = TREE_CODE (to);
730 conv = build_identity_conv (from, expr);
731 if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
733 from = type_decays_to (from);
734 fcode = TREE_CODE (from);
735 conv = build_conv (ck_lvalue, from, conv);
737 else if (fromref || (expr && lvalue_p (expr)))
742 bitfield_type = is_bitfield_expr_with_lowered_type (expr);
745 from = strip_top_quals (bitfield_type);
746 fcode = TREE_CODE (from);
749 conv = build_conv (ck_rvalue, from, conv);
752 /* Allow conversion between `__complex__' data types. */
753 if (tcode == COMPLEX_TYPE && fcode == COMPLEX_TYPE)
755 /* The standard conversion sequence to convert FROM to TO is
756 the standard conversion sequence to perform componentwise
758 conversion *part_conv = standard_conversion
759 (TREE_TYPE (to), TREE_TYPE (from), NULL_TREE, c_cast_p, flags);
763 conv = build_conv (part_conv->kind, to, conv);
764 conv->rank = part_conv->rank;
772 if (same_type_p (from, to))
775 if ((tcode == POINTER_TYPE || TYPE_PTR_TO_MEMBER_P (to))
776 && expr && null_ptr_cst_p (expr))
777 conv = build_conv (ck_std, to, conv);
778 else if ((tcode == INTEGER_TYPE && fcode == POINTER_TYPE)
779 || (tcode == POINTER_TYPE && fcode == INTEGER_TYPE))
781 /* For backwards brain damage compatibility, allow interconversion of
782 pointers and integers with a pedwarn. */
783 conv = build_conv (ck_std, to, conv);
786 else if (UNSCOPED_ENUM_P (to) && fcode == INTEGER_TYPE)
788 /* For backwards brain damage compatibility, allow interconversion of
789 enums and integers with a pedwarn. */
790 conv = build_conv (ck_std, to, conv);
793 else if ((tcode == POINTER_TYPE && fcode == POINTER_TYPE)
794 || (TYPE_PTRMEM_P (to) && TYPE_PTRMEM_P (from)))
799 if (tcode == POINTER_TYPE
800 && same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (from),
803 else if (VOID_TYPE_P (TREE_TYPE (to))
804 && !TYPE_PTRMEM_P (from)
805 && TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE)
807 from = build_pointer_type
808 (cp_build_qualified_type (void_type_node,
809 cp_type_quals (TREE_TYPE (from))));
810 conv = build_conv (ck_ptr, from, conv);
812 else if (TYPE_PTRMEM_P (from))
814 tree fbase = TYPE_PTRMEM_CLASS_TYPE (from);
815 tree tbase = TYPE_PTRMEM_CLASS_TYPE (to);
817 if (DERIVED_FROM_P (fbase, tbase)
818 && (same_type_ignoring_top_level_qualifiers_p
819 (TYPE_PTRMEM_POINTED_TO_TYPE (from),
820 TYPE_PTRMEM_POINTED_TO_TYPE (to))))
822 from = build_ptrmem_type (tbase,
823 TYPE_PTRMEM_POINTED_TO_TYPE (from));
824 conv = build_conv (ck_pmem, from, conv);
826 else if (!same_type_p (fbase, tbase))
829 else if (CLASS_TYPE_P (TREE_TYPE (from))
830 && CLASS_TYPE_P (TREE_TYPE (to))
833 An rvalue of type "pointer to cv D," where D is a
834 class type, can be converted to an rvalue of type
835 "pointer to cv B," where B is a base class (clause
836 _class.derived_) of D. If B is an inaccessible
837 (clause _class.access_) or ambiguous
838 (_class.member.lookup_) base class of D, a program
839 that necessitates this conversion is ill-formed.
840 Therefore, we use DERIVED_FROM_P, and do not check
841 access or uniqueness. */
842 && DERIVED_FROM_P (TREE_TYPE (to), TREE_TYPE (from)))
845 cp_build_qualified_type (TREE_TYPE (to),
846 cp_type_quals (TREE_TYPE (from)));
847 from = build_pointer_type (from);
848 conv = build_conv (ck_ptr, from, conv);
852 if (tcode == POINTER_TYPE)
854 to_pointee = TREE_TYPE (to);
855 from_pointee = TREE_TYPE (from);
859 to_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (to);
860 from_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (from);
863 if (same_type_p (from, to))
865 else if (c_cast_p && comp_ptr_ttypes_const (to, from))
866 /* In a C-style cast, we ignore CV-qualification because we
867 are allowed to perform a static_cast followed by a
869 conv = build_conv (ck_qual, to, conv);
870 else if (!c_cast_p && comp_ptr_ttypes (to_pointee, from_pointee))
871 conv = build_conv (ck_qual, to, conv);
872 else if (expr && string_conv_p (to, expr, 0))
873 /* converting from string constant to char *. */
874 conv = build_conv (ck_qual, to, conv);
875 else if (ptr_reasonably_similar (to_pointee, from_pointee))
877 conv = build_conv (ck_ptr, to, conv);
885 else if (TYPE_PTRMEMFUNC_P (to) && TYPE_PTRMEMFUNC_P (from))
887 tree fromfn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (from));
888 tree tofn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (to));
889 tree fbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fromfn)));
890 tree tbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (tofn)));
892 if (!DERIVED_FROM_P (fbase, tbase)
893 || !same_type_p (TREE_TYPE (fromfn), TREE_TYPE (tofn))
894 || !compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)),
895 TREE_CHAIN (TYPE_ARG_TYPES (tofn)))
896 || cp_type_quals (fbase) != cp_type_quals (tbase))
899 from = build_memfn_type (fromfn, tbase, cp_type_quals (tbase));
900 from = build_ptrmemfunc_type (build_pointer_type (from));
901 conv = build_conv (ck_pmem, from, conv);
904 else if (tcode == BOOLEAN_TYPE)
908 An rvalue of arithmetic, unscoped enumeration, pointer, or
909 pointer to member type can be converted to an rvalue of type
911 if (ARITHMETIC_TYPE_P (from)
912 || UNSCOPED_ENUM_P (from)
913 || fcode == POINTER_TYPE
914 || TYPE_PTR_TO_MEMBER_P (from))
916 conv = build_conv (ck_std, to, conv);
917 if (fcode == POINTER_TYPE
918 || TYPE_PTRMEM_P (from)
919 || (TYPE_PTRMEMFUNC_P (from)
920 && conv->rank < cr_pbool))
921 conv->rank = cr_pbool;
927 /* We don't check for ENUMERAL_TYPE here because there are no standard
928 conversions to enum type. */
929 /* As an extension, allow conversion to complex type. */
930 else if (ARITHMETIC_TYPE_P (to))
932 if (! (INTEGRAL_CODE_P (fcode) || fcode == REAL_TYPE)
933 || SCOPED_ENUM_P (from))
935 conv = build_conv (ck_std, to, conv);
937 /* Give this a better rank if it's a promotion. */
938 if (same_type_p (to, type_promotes_to (from))
939 && conv->u.next->rank <= cr_promotion)
940 conv->rank = cr_promotion;
942 else if (fcode == VECTOR_TYPE && tcode == VECTOR_TYPE
943 && vector_types_convertible_p (from, to, false))
944 return build_conv (ck_std, to, conv);
945 else if (MAYBE_CLASS_TYPE_P (to) && MAYBE_CLASS_TYPE_P (from)
946 && is_properly_derived_from (from, to))
948 if (conv->kind == ck_rvalue)
950 conv = build_conv (ck_base, to, conv);
951 /* The derived-to-base conversion indicates the initialization
952 of a parameter with base type from an object of a derived
953 type. A temporary object is created to hold the result of
954 the conversion unless we're binding directly to a reference. */
955 conv->need_temporary_p = !(flags & LOOKUP_NO_TEMP_BIND);
960 if (flags & LOOKUP_NO_NARROWING)
961 conv->check_narrowing = true;
966 /* Returns nonzero if T1 is reference-related to T2. */
969 reference_related_p (tree t1, tree t2)
971 t1 = TYPE_MAIN_VARIANT (t1);
972 t2 = TYPE_MAIN_VARIANT (t2);
976 Given types "cv1 T1" and "cv2 T2," "cv1 T1" is reference-related
977 to "cv2 T2" if T1 is the same type as T2, or T1 is a base class
979 return (same_type_p (t1, t2)
980 || (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
981 && DERIVED_FROM_P (t1, t2)));
984 /* Returns nonzero if T1 is reference-compatible with T2. */
987 reference_compatible_p (tree t1, tree t2)
991 "cv1 T1" is reference compatible with "cv2 T2" if T1 is
992 reference-related to T2 and cv1 is the same cv-qualification as,
993 or greater cv-qualification than, cv2. */
994 return (reference_related_p (t1, t2)
995 && at_least_as_qualified_p (t1, t2));
998 /* Determine whether or not the EXPR (of class type S) can be
999 converted to T as in [over.match.ref]. */
1002 convert_class_to_reference (tree reference_type, tree s, tree expr, int flags)
1008 struct z_candidate *candidates;
1009 struct z_candidate *cand;
1012 conversions = lookup_conversions (s);
1018 Assuming that "cv1 T" is the underlying type of the reference
1019 being initialized, and "cv S" is the type of the initializer
1020 expression, with S a class type, the candidate functions are
1021 selected as follows:
1023 --The conversion functions of S and its base classes are
1024 considered. Those that are not hidden within S and yield type
1025 "reference to cv2 T2", where "cv1 T" is reference-compatible
1026 (_dcl.init.ref_) with "cv2 T2", are candidate functions.
1028 The argument list has one argument, which is the initializer
1033 /* Conceptually, we should take the address of EXPR and put it in
1034 the argument list. Unfortunately, however, that can result in
1035 error messages, which we should not issue now because we are just
1036 trying to find a conversion operator. Therefore, we use NULL,
1037 cast to the appropriate type. */
1038 first_arg = build_int_cst (build_pointer_type (s), 0);
1040 t = TREE_TYPE (reference_type);
1042 for (; conversions; conversions = TREE_CHAIN (conversions))
1044 tree fns = TREE_VALUE (conversions);
1046 for (; fns; fns = OVL_NEXT (fns))
1048 tree f = OVL_CURRENT (fns);
1049 tree t2 = TREE_TYPE (TREE_TYPE (f));
1051 if (DECL_NONCONVERTING_P (f)
1052 && (flags & LOOKUP_ONLYCONVERTING))
1057 /* If this is a template function, try to get an exact
1059 if (TREE_CODE (f) == TEMPLATE_DECL)
1061 cand = add_template_candidate (&candidates,
1068 TREE_PURPOSE (conversions),
1074 /* Now, see if the conversion function really returns
1075 an lvalue of the appropriate type. From the
1076 point of view of unification, simply returning an
1077 rvalue of the right type is good enough. */
1079 t2 = TREE_TYPE (TREE_TYPE (f));
1080 if (TREE_CODE (t2) != REFERENCE_TYPE
1081 || !reference_compatible_p (t, TREE_TYPE (t2)))
1083 candidates = candidates->next;
1088 else if (TREE_CODE (t2) == REFERENCE_TYPE
1089 && reference_compatible_p (t, TREE_TYPE (t2)))
1090 cand = add_function_candidate (&candidates, f, s, first_arg,
1091 NULL, TYPE_BINFO (s),
1092 TREE_PURPOSE (conversions),
1097 conversion *identity_conv;
1098 /* Build a standard conversion sequence indicating the
1099 binding from the reference type returned by the
1100 function to the desired REFERENCE_TYPE. */
1102 = build_identity_conv (TREE_TYPE (TREE_TYPE
1103 (TREE_TYPE (cand->fn))),
1106 = (direct_reference_binding
1107 (reference_type, identity_conv));
1108 cand->second_conv->rvaluedness_matches_p
1109 = TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn)))
1110 == TYPE_REF_IS_RVALUE (reference_type);
1111 cand->second_conv->bad_p |= cand->convs[0]->bad_p;
1113 /* Don't allow binding of lvalues to rvalue references. */
1114 if (TYPE_REF_IS_RVALUE (reference_type)
1115 && !TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn))))
1116 cand->second_conv->bad_p = true;
1121 candidates = splice_viable (candidates, pedantic, &any_viable_p);
1122 /* If none of the conversion functions worked out, let our caller
1127 cand = tourney (candidates);
1131 /* Now that we know that this is the function we're going to use fix
1132 the dummy first argument. */
1133 gcc_assert (cand->first_arg == NULL_TREE
1134 || integer_zerop (cand->first_arg));
1135 cand->first_arg = build_this (expr);
1137 /* Build a user-defined conversion sequence representing the
1139 conv = build_conv (ck_user,
1140 TREE_TYPE (TREE_TYPE (cand->fn)),
1141 build_identity_conv (TREE_TYPE (expr), expr));
1144 if (cand->viable == -1)
1147 /* Merge it with the standard conversion sequence from the
1148 conversion function's return type to the desired type. */
1149 cand->second_conv = merge_conversion_sequences (conv, cand->second_conv);
1151 return cand->second_conv;
1154 /* A reference of the indicated TYPE is being bound directly to the
1155 expression represented by the implicit conversion sequence CONV.
1156 Return a conversion sequence for this binding. */
1159 direct_reference_binding (tree type, conversion *conv)
1163 gcc_assert (TREE_CODE (type) == REFERENCE_TYPE);
1164 gcc_assert (TREE_CODE (conv->type) != REFERENCE_TYPE);
1166 t = TREE_TYPE (type);
1170 When a parameter of reference type binds directly
1171 (_dcl.init.ref_) to an argument expression, the implicit
1172 conversion sequence is the identity conversion, unless the
1173 argument expression has a type that is a derived class of the
1174 parameter type, in which case the implicit conversion sequence is
1175 a derived-to-base Conversion.
1177 If the parameter binds directly to the result of applying a
1178 conversion function to the argument expression, the implicit
1179 conversion sequence is a user-defined conversion sequence
1180 (_over.ics.user_), with the second standard conversion sequence
1181 either an identity conversion or, if the conversion function
1182 returns an entity of a type that is a derived class of the
1183 parameter type, a derived-to-base conversion. */
1184 if (!same_type_ignoring_top_level_qualifiers_p (t, conv->type))
1186 /* Represent the derived-to-base conversion. */
1187 conv = build_conv (ck_base, t, conv);
1188 /* We will actually be binding to the base-class subobject in
1189 the derived class, so we mark this conversion appropriately.
1190 That way, convert_like knows not to generate a temporary. */
1191 conv->need_temporary_p = false;
1193 return build_conv (ck_ref_bind, type, conv);
1196 /* Returns the conversion path from type FROM to reference type TO for
1197 purposes of reference binding. For lvalue binding, either pass a
1198 reference type to FROM or an lvalue expression to EXPR. If the
1199 reference will be bound to a temporary, NEED_TEMPORARY_P is set for
1200 the conversion returned. If C_CAST_P is true, this
1201 conversion is coming from a C-style cast. */
1204 reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
1206 conversion *conv = NULL;
1207 tree to = TREE_TYPE (rto);
1212 cp_lvalue_kind is_lvalue = clk_none;
1214 if (TREE_CODE (to) == FUNCTION_TYPE && expr && type_unknown_p (expr))
1216 expr = instantiate_type (to, expr, tf_none);
1217 if (expr == error_mark_node)
1219 from = TREE_TYPE (expr);
1222 if (TREE_CODE (from) == REFERENCE_TYPE)
1224 /* Anything with reference type is an lvalue. */
1225 is_lvalue = clk_ordinary;
1226 from = TREE_TYPE (from);
1229 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1231 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
1232 conv = implicit_conversion (to, from, expr, c_cast_p,
1234 if (!CLASS_TYPE_P (to)
1235 && CONSTRUCTOR_NELTS (expr) == 1)
1237 expr = CONSTRUCTOR_ELT (expr, 0)->value;
1238 if (error_operand_p (expr))
1240 from = TREE_TYPE (expr);
1244 if (is_lvalue == clk_none && expr)
1245 is_lvalue = real_lvalue_p (expr);
1248 if ((is_lvalue & clk_bitfield) != 0)
1249 tfrom = unlowered_expr_type (expr);
1251 /* Figure out whether or not the types are reference-related and
1252 reference compatible. We have do do this after stripping
1253 references from FROM. */
1254 related_p = reference_related_p (to, tfrom);
1255 /* If this is a C cast, first convert to an appropriately qualified
1256 type, so that we can later do a const_cast to the desired type. */
1257 if (related_p && c_cast_p
1258 && !at_least_as_qualified_p (to, tfrom))
1259 to = build_qualified_type (to, cp_type_quals (tfrom));
1260 compatible_p = reference_compatible_p (to, tfrom);
1262 /* Directly bind reference when target expression's type is compatible with
1263 the reference and expression is an lvalue. In DR391, the wording in
1264 [8.5.3/5 dcl.init.ref] is changed to also require direct bindings for
1265 const and rvalue references to rvalues of compatible class type.
1266 We should also do direct bindings for non-class "rvalues" derived from
1267 rvalue references. */
1270 || (((CP_TYPE_CONST_NON_VOLATILE_P (to)
1271 && !(flags & LOOKUP_NO_TEMP_BIND))
1272 || TYPE_REF_IS_RVALUE (rto))
1273 && (CLASS_TYPE_P (from) || (expr && lvalue_p (expr))))))
1277 If the initializer expression
1279 -- is an lvalue (but not an lvalue for a bit-field), and "cv1 T1"
1280 is reference-compatible with "cv2 T2,"
1282 the reference is bound directly to the initializer expression
1286 If the initializer expression is an rvalue, with T2 a class type,
1287 and "cv1 T1" is reference-compatible with "cv2 T2", the reference
1288 is bound to the object represented by the rvalue or to a sub-object
1289 within that object. */
1291 conv = build_identity_conv (tfrom, expr);
1292 conv = direct_reference_binding (rto, conv);
1294 if (flags & LOOKUP_PREFER_RVALUE)
1295 /* The top-level caller requested that we pretend that the lvalue
1296 be treated as an rvalue. */
1297 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1299 conv->rvaluedness_matches_p
1300 = (TYPE_REF_IS_RVALUE (rto) == !is_lvalue);
1302 if ((is_lvalue & clk_bitfield) != 0
1303 || ((is_lvalue & clk_packed) != 0 && !TYPE_PACKED (to)))
1304 /* For the purposes of overload resolution, we ignore the fact
1305 this expression is a bitfield or packed field. (In particular,
1306 [over.ics.ref] says specifically that a function with a
1307 non-const reference parameter is viable even if the
1308 argument is a bitfield.)
1310 However, when we actually call the function we must create
1311 a temporary to which to bind the reference. If the
1312 reference is volatile, or isn't const, then we cannot make
1313 a temporary, so we just issue an error when the conversion
1315 conv->need_temporary_p = true;
1317 /* Don't allow binding of lvalues to rvalue references. */
1318 if (is_lvalue && TYPE_REF_IS_RVALUE (rto)
1319 && !(flags & LOOKUP_PREFER_RVALUE))
1324 /* [class.conv.fct] A conversion function is never used to convert a
1325 (possibly cv-qualified) object to the (possibly cv-qualified) same
1326 object type (or a reference to it), to a (possibly cv-qualified) base
1327 class of that type (or a reference to it).... */
1328 else if (CLASS_TYPE_P (from) && !related_p
1329 && !(flags & LOOKUP_NO_CONVERSION))
1333 If the initializer expression
1335 -- has a class type (i.e., T2 is a class type) can be
1336 implicitly converted to an lvalue of type "cv3 T3," where
1337 "cv1 T1" is reference-compatible with "cv3 T3". (this
1338 conversion is selected by enumerating the applicable
1339 conversion functions (_over.match.ref_) and choosing the
1340 best one through overload resolution. (_over.match_).
1342 the reference is bound to the lvalue result of the conversion
1343 in the second case. */
1344 conv = convert_class_to_reference (rto, from, expr, flags);
1349 /* From this point on, we conceptually need temporaries, even if we
1350 elide them. Only the cases above are "direct bindings". */
1351 if (flags & LOOKUP_NO_TEMP_BIND)
1356 When a parameter of reference type is not bound directly to an
1357 argument expression, the conversion sequence is the one required
1358 to convert the argument expression to the underlying type of the
1359 reference according to _over.best.ics_. Conceptually, this
1360 conversion sequence corresponds to copy-initializing a temporary
1361 of the underlying type with the argument expression. Any
1362 difference in top-level cv-qualification is subsumed by the
1363 initialization itself and does not constitute a conversion. */
1367 Otherwise, the reference shall be to a non-volatile const type.
1369 Under C++0x, [8.5.3/5 dcl.init.ref] it may also be an rvalue reference */
1370 if (!CP_TYPE_CONST_NON_VOLATILE_P (to) && !TYPE_REF_IS_RVALUE (rto))
1375 Otherwise, a temporary of type "cv1 T1" is created and
1376 initialized from the initializer expression using the rules for a
1377 non-reference copy initialization. If T1 is reference-related to
1378 T2, cv1 must be the same cv-qualification as, or greater
1379 cv-qualification than, cv2; otherwise, the program is ill-formed. */
1380 if (related_p && !at_least_as_qualified_p (to, from))
1383 /* We're generating a temporary now, but don't bind any more in the
1384 conversion (specifically, don't slice the temporary returned by a
1385 conversion operator). */
1386 flags |= LOOKUP_NO_TEMP_BIND;
1388 /* Temporaries are copy-initialized, except for this hack to allow
1389 explicit conversion ops to the copy ctor. See also
1390 add_function_candidate. */
1391 if (!(flags & LOOKUP_COPY_PARM))
1392 flags |= LOOKUP_ONLYCONVERTING;
1395 conv = implicit_conversion (to, from, expr, c_cast_p,
1400 conv = build_conv (ck_ref_bind, rto, conv);
1401 /* This reference binding, unlike those above, requires the
1402 creation of a temporary. */
1403 conv->need_temporary_p = true;
1404 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1409 /* Returns the implicit conversion sequence (see [over.ics]) from type
1410 FROM to type TO. The optional expression EXPR may affect the
1411 conversion. FLAGS are the usual overloading flags. If C_CAST_P is
1412 true, this conversion is coming from a C-style cast. */
1415 implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
1420 if (from == error_mark_node || to == error_mark_node
1421 || expr == error_mark_node)
1424 if (TREE_CODE (to) == REFERENCE_TYPE)
1425 conv = reference_binding (to, from, expr, c_cast_p, flags);
1427 conv = standard_conversion (to, from, expr, c_cast_p, flags);
1432 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1434 if (is_std_init_list (to))
1435 return build_list_conv (to, expr, flags);
1437 /* Allow conversion from an initializer-list with one element to a
1439 if (SCALAR_TYPE_P (to))
1441 int nelts = CONSTRUCTOR_NELTS (expr);
1445 elt = integer_zero_node;
1446 else if (nelts == 1)
1447 elt = CONSTRUCTOR_ELT (expr, 0)->value;
1449 elt = error_mark_node;
1451 conv = implicit_conversion (to, TREE_TYPE (elt), elt,
1455 conv->check_narrowing = true;
1456 if (BRACE_ENCLOSED_INITIALIZER_P (elt))
1457 /* Too many levels of braces, i.e. '{{1}}'. */
1464 if (expr != NULL_TREE
1465 && (MAYBE_CLASS_TYPE_P (from)
1466 || MAYBE_CLASS_TYPE_P (to))
1467 && (flags & LOOKUP_NO_CONVERSION) == 0)
1469 struct z_candidate *cand;
1470 int convflags = (flags & (LOOKUP_NO_TEMP_BIND|LOOKUP_ONLYCONVERTING));
1472 if (CLASS_TYPE_P (to)
1473 && !CLASSTYPE_NON_AGGREGATE (complete_type (to))
1474 && BRACE_ENCLOSED_INITIALIZER_P (expr))
1475 return build_aggr_conv (to, expr, flags);
1477 cand = build_user_type_conversion_1 (to, expr, convflags);
1479 conv = cand->second_conv;
1481 /* We used to try to bind a reference to a temporary here, but that
1482 is now handled after the recursive call to this function at the end
1483 of reference_binding. */
1490 /* Add a new entry to the list of candidates. Used by the add_*_candidate
1491 functions. ARGS will not be changed until a single candidate is
1494 static struct z_candidate *
1495 add_candidate (struct z_candidate **candidates,
1496 tree fn, tree first_arg, const VEC(tree,gc) *args,
1497 size_t num_convs, conversion **convs,
1498 tree access_path, tree conversion_path,
1501 struct z_candidate *cand = (struct z_candidate *)
1502 conversion_obstack_alloc (sizeof (struct z_candidate));
1505 cand->first_arg = first_arg;
1507 cand->convs = convs;
1508 cand->num_convs = num_convs;
1509 cand->access_path = access_path;
1510 cand->conversion_path = conversion_path;
1511 cand->viable = viable;
1512 cand->next = *candidates;
1518 /* Create an overload candidate for the function or method FN called
1519 with the argument list FIRST_ARG/ARGS and add it to CANDIDATES.
1520 FLAGS is passed on to implicit_conversion.
1522 This does not change ARGS.
1524 CTYPE, if non-NULL, is the type we want to pretend this function
1525 comes from for purposes of overload resolution. */
1527 static struct z_candidate *
1528 add_function_candidate (struct z_candidate **candidates,
1529 tree fn, tree ctype, tree first_arg,
1530 const VEC(tree,gc) *args, tree access_path,
1531 tree conversion_path, int flags)
1533 tree parmlist = TYPE_ARG_TYPES (TREE_TYPE (fn));
1537 tree orig_first_arg = first_arg;
1541 /* At this point we should not see any functions which haven't been
1542 explicitly declared, except for friend functions which will have
1543 been found using argument dependent lookup. */
1544 gcc_assert (!DECL_ANTICIPATED (fn) || DECL_HIDDEN_FRIEND_P (fn));
1546 /* The `this', `in_chrg' and VTT arguments to constructors are not
1547 considered in overload resolution. */
1548 if (DECL_CONSTRUCTOR_P (fn))
1550 parmlist = skip_artificial_parms_for (fn, parmlist);
1551 skip = num_artificial_parms_for (fn);
1552 if (skip > 0 && first_arg != NULL_TREE)
1555 first_arg = NULL_TREE;
1561 len = VEC_length (tree, args) - skip + (first_arg != NULL_TREE ? 1 : 0);
1562 convs = alloc_conversions (len);
1564 /* 13.3.2 - Viable functions [over.match.viable]
1565 First, to be a viable function, a candidate function shall have enough
1566 parameters to agree in number with the arguments in the list.
1568 We need to check this first; otherwise, checking the ICSes might cause
1569 us to produce an ill-formed template instantiation. */
1571 parmnode = parmlist;
1572 for (i = 0; i < len; ++i)
1574 if (parmnode == NULL_TREE || parmnode == void_list_node)
1576 parmnode = TREE_CHAIN (parmnode);
1579 if (i < len && parmnode)
1582 /* Make sure there are default args for the rest of the parms. */
1583 else if (!sufficient_parms_p (parmnode))
1589 /* Second, for F to be a viable function, there shall exist for each
1590 argument an implicit conversion sequence that converts that argument
1591 to the corresponding parameter of F. */
1593 parmnode = parmlist;
1595 for (i = 0; i < len; ++i)
1601 if (parmnode == void_list_node)
1604 if (i == 0 && first_arg != NULL_TREE)
1607 arg = VEC_index (tree, args,
1608 i + skip - (first_arg != NULL_TREE ? 1 : 0));
1609 argtype = lvalue_type (arg);
1611 is_this = (i == 0 && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
1612 && ! DECL_CONSTRUCTOR_P (fn));
1616 tree parmtype = TREE_VALUE (parmnode);
1619 /* The type of the implicit object parameter ('this') for
1620 overload resolution is not always the same as for the
1621 function itself; conversion functions are considered to
1622 be members of the class being converted, and functions
1623 introduced by a using-declaration are considered to be
1624 members of the class that uses them.
1626 Since build_over_call ignores the ICS for the `this'
1627 parameter, we can just change the parm type. */
1628 if (ctype && is_this)
1631 = build_qualified_type (ctype,
1632 TYPE_QUALS (TREE_TYPE (parmtype)));
1633 parmtype = build_pointer_type (parmtype);
1636 if (ctype && i == 0 && DECL_COPY_CONSTRUCTOR_P (fn)
1639 /* Hack: Direct-initialize copy parm (i.e. suppress
1640 LOOKUP_ONLYCONVERTING) to make explicit conversion ops
1641 work. See also reference_binding. */
1642 lflags |= LOOKUP_COPY_PARM;
1643 if (flags & LOOKUP_NO_COPY_CTOR_CONVERSION)
1644 lflags |= LOOKUP_NO_CONVERSION;
1647 lflags |= LOOKUP_ONLYCONVERTING;
1649 t = implicit_conversion (parmtype, argtype, arg,
1650 /*c_cast_p=*/false, lflags);
1654 t = build_identity_conv (argtype, arg);
1655 t->ellipsis_p = true;
1672 parmnode = TREE_CHAIN (parmnode);
1676 return add_candidate (candidates, fn, orig_first_arg, args, len, convs,
1677 access_path, conversion_path, viable);
1680 /* Create an overload candidate for the conversion function FN which will
1681 be invoked for expression OBJ, producing a pointer-to-function which
1682 will in turn be called with the argument list FIRST_ARG/ARGLIST,
1683 and add it to CANDIDATES. This does not change ARGLIST. FLAGS is
1684 passed on to implicit_conversion.
1686 Actually, we don't really care about FN; we care about the type it
1687 converts to. There may be multiple conversion functions that will
1688 convert to that type, and we rely on build_user_type_conversion_1 to
1689 choose the best one; so when we create our candidate, we record the type
1690 instead of the function. */
1692 static struct z_candidate *
1693 add_conv_candidate (struct z_candidate **candidates, tree fn, tree obj,
1694 tree first_arg, const VEC(tree,gc) *arglist,
1695 tree access_path, tree conversion_path)
1697 tree totype = TREE_TYPE (TREE_TYPE (fn));
1698 int i, len, viable, flags;
1699 tree parmlist, parmnode;
1702 for (parmlist = totype; TREE_CODE (parmlist) != FUNCTION_TYPE; )
1703 parmlist = TREE_TYPE (parmlist);
1704 parmlist = TYPE_ARG_TYPES (parmlist);
1706 len = VEC_length (tree, arglist) + (first_arg != NULL_TREE ? 1 : 0) + 1;
1707 convs = alloc_conversions (len);
1708 parmnode = parmlist;
1710 flags = LOOKUP_IMPLICIT;
1712 /* Don't bother looking up the same type twice. */
1713 if (*candidates && (*candidates)->fn == totype)
1716 for (i = 0; i < len; ++i)
1723 else if (i == 1 && first_arg != NULL_TREE)
1726 arg = VEC_index (tree, arglist,
1727 i - (first_arg != NULL_TREE ? 1 : 0) - 1);
1728 argtype = lvalue_type (arg);
1731 t = implicit_conversion (totype, argtype, arg, /*c_cast_p=*/false,
1733 else if (parmnode == void_list_node)
1736 t = implicit_conversion (TREE_VALUE (parmnode), argtype, arg,
1737 /*c_cast_p=*/false, flags);
1740 t = build_identity_conv (argtype, arg);
1741 t->ellipsis_p = true;
1755 parmnode = TREE_CHAIN (parmnode);
1761 if (!sufficient_parms_p (parmnode))
1764 return add_candidate (candidates, totype, first_arg, arglist, len, convs,
1765 access_path, conversion_path, viable);
1769 build_builtin_candidate (struct z_candidate **candidates, tree fnname,
1770 tree type1, tree type2, tree *args, tree *argtypes,
1782 num_convs = args[2] ? 3 : (args[1] ? 2 : 1);
1783 convs = alloc_conversions (num_convs);
1785 /* TRUTH_*_EXPR do "contextual conversion to bool", which means explicit
1786 conversion ops are allowed. We handle that here by just checking for
1787 boolean_type_node because other operators don't ask for it. COND_EXPR
1788 also does contextual conversion to bool for the first operand, but we
1789 handle that in build_conditional_expr, and type1 here is operand 2. */
1790 if (type1 != boolean_type_node)
1791 flags |= LOOKUP_ONLYCONVERTING;
1793 for (i = 0; i < 2; ++i)
1798 t = implicit_conversion (types[i], argtypes[i], args[i],
1799 /*c_cast_p=*/false, flags);
1803 /* We need something for printing the candidate. */
1804 t = build_identity_conv (types[i], NULL_TREE);
1811 /* For COND_EXPR we rearranged the arguments; undo that now. */
1814 convs[2] = convs[1];
1815 convs[1] = convs[0];
1816 t = implicit_conversion (boolean_type_node, argtypes[2], args[2],
1817 /*c_cast_p=*/false, flags);
1824 add_candidate (candidates, fnname, /*first_arg=*/NULL_TREE, /*args=*/NULL,
1826 /*access_path=*/NULL_TREE,
1827 /*conversion_path=*/NULL_TREE,
1832 is_complete (tree t)
1834 return COMPLETE_TYPE_P (complete_type (t));
1837 /* Returns nonzero if TYPE is a promoted arithmetic type. */
1840 promoted_arithmetic_type_p (tree type)
1844 In this section, the term promoted integral type is used to refer
1845 to those integral types which are preserved by integral promotion
1846 (including e.g. int and long but excluding e.g. char).
1847 Similarly, the term promoted arithmetic type refers to promoted
1848 integral types plus floating types. */
1849 return ((CP_INTEGRAL_TYPE_P (type)
1850 && same_type_p (type_promotes_to (type), type))
1851 || TREE_CODE (type) == REAL_TYPE);
1854 /* Create any builtin operator overload candidates for the operator in
1855 question given the converted operand types TYPE1 and TYPE2. The other
1856 args are passed through from add_builtin_candidates to
1857 build_builtin_candidate.
1859 TYPE1 and TYPE2 may not be permissible, and we must filter them.
1860 If CODE is requires candidates operands of the same type of the kind
1861 of which TYPE1 and TYPE2 are, we add both candidates
1862 CODE (TYPE1, TYPE1) and CODE (TYPE2, TYPE2). */
1865 add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
1866 enum tree_code code2, tree fnname, tree type1,
1867 tree type2, tree *args, tree *argtypes, int flags)
1871 case POSTINCREMENT_EXPR:
1872 case POSTDECREMENT_EXPR:
1873 args[1] = integer_zero_node;
1874 type2 = integer_type_node;
1883 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
1884 and VQ is either volatile or empty, there exist candidate operator
1885 functions of the form
1886 VQ T& operator++(VQ T&);
1887 T operator++(VQ T&, int);
1888 5 For every pair T, VQ), where T is an enumeration type or an arithmetic
1889 type other than bool, and VQ is either volatile or empty, there exist
1890 candidate operator functions of the form
1891 VQ T& operator--(VQ T&);
1892 T operator--(VQ T&, int);
1893 6 For every pair T, VQ), where T is a cv-qualified or cv-unqualified
1894 complete object type, and VQ is either volatile or empty, there exist
1895 candidate operator functions of the form
1896 T*VQ& operator++(T*VQ&);
1897 T*VQ& operator--(T*VQ&);
1898 T* operator++(T*VQ&, int);
1899 T* operator--(T*VQ&, int); */
1901 case POSTDECREMENT_EXPR:
1902 case PREDECREMENT_EXPR:
1903 if (TREE_CODE (type1) == BOOLEAN_TYPE)
1905 case POSTINCREMENT_EXPR:
1906 case PREINCREMENT_EXPR:
1907 if (ARITHMETIC_TYPE_P (type1) || TYPE_PTROB_P (type1))
1909 type1 = build_reference_type (type1);
1914 /* 7 For every cv-qualified or cv-unqualified complete object type T, there
1915 exist candidate operator functions of the form
1919 8 For every function type T, there exist candidate operator functions of
1921 T& operator*(T*); */
1924 if (TREE_CODE (type1) == POINTER_TYPE
1925 && (TYPE_PTROB_P (type1)
1926 || TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE))
1930 /* 9 For every type T, there exist candidate operator functions of the form
1933 10For every promoted arithmetic type T, there exist candidate operator
1934 functions of the form
1938 case UNARY_PLUS_EXPR: /* unary + */
1939 if (TREE_CODE (type1) == POINTER_TYPE)
1942 if (ARITHMETIC_TYPE_P (type1))
1946 /* 11For every promoted integral type T, there exist candidate operator
1947 functions of the form
1951 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1))
1955 /* 12For every quintuple C1, C2, T, CV1, CV2), where C2 is a class type, C1
1956 is the same type as C2 or is a derived class of C2, T is a complete
1957 object type or a function type, and CV1 and CV2 are cv-qualifier-seqs,
1958 there exist candidate operator functions of the form
1959 CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
1960 where CV12 is the union of CV1 and CV2. */
1963 if (TREE_CODE (type1) == POINTER_TYPE
1964 && TYPE_PTR_TO_MEMBER_P (type2))
1966 tree c1 = TREE_TYPE (type1);
1967 tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
1969 if (MAYBE_CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
1970 && (TYPE_PTRMEMFUNC_P (type2)
1971 || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
1976 /* 13For every pair of promoted arithmetic types L and R, there exist can-
1977 didate operator functions of the form
1982 bool operator<(L, R);
1983 bool operator>(L, R);
1984 bool operator<=(L, R);
1985 bool operator>=(L, R);
1986 bool operator==(L, R);
1987 bool operator!=(L, R);
1988 where LR is the result of the usual arithmetic conversions between
1991 14For every pair of types T and I, where T is a cv-qualified or cv-
1992 unqualified complete object type and I is a promoted integral type,
1993 there exist candidate operator functions of the form
1994 T* operator+(T*, I);
1995 T& operator[](T*, I);
1996 T* operator-(T*, I);
1997 T* operator+(I, T*);
1998 T& operator[](I, T*);
2000 15For every T, where T is a pointer to complete object type, there exist
2001 candidate operator functions of the form112)
2002 ptrdiff_t operator-(T, T);
2004 16For every pointer or enumeration type T, there exist candidate operator
2005 functions of the form
2006 bool operator<(T, T);
2007 bool operator>(T, T);
2008 bool operator<=(T, T);
2009 bool operator>=(T, T);
2010 bool operator==(T, T);
2011 bool operator!=(T, T);
2013 17For every pointer to member type T, there exist candidate operator
2014 functions of the form
2015 bool operator==(T, T);
2016 bool operator!=(T, T); */
2019 if (TYPE_PTROB_P (type1) && TYPE_PTROB_P (type2))
2021 if (TYPE_PTROB_P (type1)
2022 && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2024 type2 = ptrdiff_type_node;
2028 case TRUNC_DIV_EXPR:
2029 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2035 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2036 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2)))
2038 if (TYPE_PTR_TO_MEMBER_P (type1) && null_ptr_cst_p (args[1]))
2043 if (TYPE_PTR_TO_MEMBER_P (type2) && null_ptr_cst_p (args[0]))
2055 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2057 if (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2059 if (TREE_CODE (type1) == ENUMERAL_TYPE
2060 && TREE_CODE (type2) == ENUMERAL_TYPE)
2062 if (TYPE_PTR_P (type1)
2063 && null_ptr_cst_p (args[1])
2064 && !uses_template_parms (type1))
2069 if (null_ptr_cst_p (args[0])
2070 && TYPE_PTR_P (type2)
2071 && !uses_template_parms (type2))
2079 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2082 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && TYPE_PTROB_P (type2))
2084 type1 = ptrdiff_type_node;
2087 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2089 type2 = ptrdiff_type_node;
2094 /* 18For every pair of promoted integral types L and R, there exist candi-
2095 date operator functions of the form
2102 where LR is the result of the usual arithmetic conversions between
2105 case TRUNC_MOD_EXPR:
2111 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2115 /* 19For every triple L, VQ, R), where L is an arithmetic or enumeration
2116 type, VQ is either volatile or empty, and R is a promoted arithmetic
2117 type, there exist candidate operator functions of the form
2118 VQ L& operator=(VQ L&, R);
2119 VQ L& operator*=(VQ L&, R);
2120 VQ L& operator/=(VQ L&, R);
2121 VQ L& operator+=(VQ L&, R);
2122 VQ L& operator-=(VQ L&, R);
2124 20For every pair T, VQ), where T is any type and VQ is either volatile
2125 or empty, there exist candidate operator functions of the form
2126 T*VQ& operator=(T*VQ&, T*);
2128 21For every pair T, VQ), where T is a pointer to member type and VQ is
2129 either volatile or empty, there exist candidate operator functions of
2131 VQ T& operator=(VQ T&, T);
2133 22For every triple T, VQ, I), where T is a cv-qualified or cv-
2134 unqualified complete object type, VQ is either volatile or empty, and
2135 I is a promoted integral type, there exist candidate operator func-
2137 T*VQ& operator+=(T*VQ&, I);
2138 T*VQ& operator-=(T*VQ&, I);
2140 23For every triple L, VQ, R), where L is an integral or enumeration
2141 type, VQ is either volatile or empty, and R is a promoted integral
2142 type, there exist candidate operator functions of the form
2144 VQ L& operator%=(VQ L&, R);
2145 VQ L& operator<<=(VQ L&, R);
2146 VQ L& operator>>=(VQ L&, R);
2147 VQ L& operator&=(VQ L&, R);
2148 VQ L& operator^=(VQ L&, R);
2149 VQ L& operator|=(VQ L&, R); */
2156 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2158 type2 = ptrdiff_type_node;
2162 case TRUNC_DIV_EXPR:
2163 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2167 case TRUNC_MOD_EXPR:
2173 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2178 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2180 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2181 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2182 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2183 || ((TYPE_PTRMEMFUNC_P (type1)
2184 || TREE_CODE (type1) == POINTER_TYPE)
2185 && null_ptr_cst_p (args[1])))
2195 type1 = build_reference_type (type1);
2201 For every pair of promoted arithmetic types L and R, there
2202 exist candidate operator functions of the form
2204 LR operator?(bool, L, R);
2206 where LR is the result of the usual arithmetic conversions
2207 between types L and R.
2209 For every type T, where T is a pointer or pointer-to-member
2210 type, there exist candidate operator functions of the form T
2211 operator?(bool, T, T); */
2213 if (promoted_arithmetic_type_p (type1)
2214 && promoted_arithmetic_type_p (type2))
2218 /* Otherwise, the types should be pointers. */
2219 if (!(TYPE_PTR_P (type1) || TYPE_PTR_TO_MEMBER_P (type1))
2220 || !(TYPE_PTR_P (type2) || TYPE_PTR_TO_MEMBER_P (type2)))
2223 /* We don't check that the two types are the same; the logic
2224 below will actually create two candidates; one in which both
2225 parameter types are TYPE1, and one in which both parameter
2233 /* If we're dealing with two pointer types or two enumeral types,
2234 we need candidates for both of them. */
2235 if (type2 && !same_type_p (type1, type2)
2236 && TREE_CODE (type1) == TREE_CODE (type2)
2237 && (TREE_CODE (type1) == REFERENCE_TYPE
2238 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2239 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2240 || TYPE_PTRMEMFUNC_P (type1)
2241 || MAYBE_CLASS_TYPE_P (type1)
2242 || TREE_CODE (type1) == ENUMERAL_TYPE))
2244 build_builtin_candidate
2245 (candidates, fnname, type1, type1, args, argtypes, flags);
2246 build_builtin_candidate
2247 (candidates, fnname, type2, type2, args, argtypes, flags);
2251 build_builtin_candidate
2252 (candidates, fnname, type1, type2, args, argtypes, flags);
2256 type_decays_to (tree type)
2258 if (TREE_CODE (type) == ARRAY_TYPE)
2259 return build_pointer_type (TREE_TYPE (type));
2260 if (TREE_CODE (type) == FUNCTION_TYPE)
2261 return build_pointer_type (type);
2265 /* There are three conditions of builtin candidates:
2267 1) bool-taking candidates. These are the same regardless of the input.
2268 2) pointer-pair taking candidates. These are generated for each type
2269 one of the input types converts to.
2270 3) arithmetic candidates. According to the standard, we should generate
2271 all of these, but I'm trying not to...
2273 Here we generate a superset of the possible candidates for this particular
2274 case. That is a subset of the full set the standard defines, plus some
2275 other cases which the standard disallows. add_builtin_candidate will
2276 filter out the invalid set. */
2279 add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
2280 enum tree_code code2, tree fnname, tree *args,
2285 tree type, argtypes[3];
2286 /* TYPES[i] is the set of possible builtin-operator parameter types
2287 we will consider for the Ith argument. These are represented as
2288 a TREE_LIST; the TREE_VALUE of each node is the potential
2292 for (i = 0; i < 3; ++i)
2295 argtypes[i] = unlowered_expr_type (args[i]);
2297 argtypes[i] = NULL_TREE;
2302 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
2303 and VQ is either volatile or empty, there exist candidate operator
2304 functions of the form
2305 VQ T& operator++(VQ T&); */
2307 case POSTINCREMENT_EXPR:
2308 case PREINCREMENT_EXPR:
2309 case POSTDECREMENT_EXPR:
2310 case PREDECREMENT_EXPR:
2315 /* 24There also exist candidate operator functions of the form
2316 bool operator!(bool);
2317 bool operator&&(bool, bool);
2318 bool operator||(bool, bool); */
2320 case TRUTH_NOT_EXPR:
2321 build_builtin_candidate
2322 (candidates, fnname, boolean_type_node,
2323 NULL_TREE, args, argtypes, flags);
2326 case TRUTH_ORIF_EXPR:
2327 case TRUTH_ANDIF_EXPR:
2328 build_builtin_candidate
2329 (candidates, fnname, boolean_type_node,
2330 boolean_type_node, args, argtypes, flags);
2352 types[0] = types[1] = NULL_TREE;
2354 for (i = 0; i < 2; ++i)
2358 else if (MAYBE_CLASS_TYPE_P (argtypes[i]))
2362 if (i == 0 && code == MODIFY_EXPR && code2 == NOP_EXPR)
2365 convs = lookup_conversions (argtypes[i]);
2367 if (code == COND_EXPR)
2369 if (real_lvalue_p (args[i]))
2370 types[i] = tree_cons
2371 (NULL_TREE, build_reference_type (argtypes[i]), types[i]);
2373 types[i] = tree_cons
2374 (NULL_TREE, TYPE_MAIN_VARIANT (argtypes[i]), types[i]);
2380 for (; convs; convs = TREE_CHAIN (convs))
2382 type = TREE_TYPE (convs);
2385 && (TREE_CODE (type) != REFERENCE_TYPE
2386 || CP_TYPE_CONST_P (TREE_TYPE (type))))
2389 if (code == COND_EXPR && TREE_CODE (type) == REFERENCE_TYPE)
2390 types[i] = tree_cons (NULL_TREE, type, types[i]);
2392 type = non_reference (type);
2393 if (i != 0 || ! ref1)
2395 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2396 if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
2397 types[i] = tree_cons (NULL_TREE, type, types[i]);
2398 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2399 type = type_promotes_to (type);
2402 if (! value_member (type, types[i]))
2403 types[i] = tree_cons (NULL_TREE, type, types[i]);
2408 if (code == COND_EXPR && real_lvalue_p (args[i]))
2409 types[i] = tree_cons
2410 (NULL_TREE, build_reference_type (argtypes[i]), types[i]);
2411 type = non_reference (argtypes[i]);
2412 if (i != 0 || ! ref1)
2414 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2415 if (enum_p && UNSCOPED_ENUM_P (type))
2416 types[i] = tree_cons (NULL_TREE, type, types[i]);
2417 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2418 type = type_promotes_to (type);
2420 types[i] = tree_cons (NULL_TREE, type, types[i]);
2424 /* Run through the possible parameter types of both arguments,
2425 creating candidates with those parameter types. */
2426 for (; types[0]; types[0] = TREE_CHAIN (types[0]))
2429 for (type = types[1]; type; type = TREE_CHAIN (type))
2430 add_builtin_candidate
2431 (candidates, code, code2, fnname, TREE_VALUE (types[0]),
2432 TREE_VALUE (type), args, argtypes, flags);
2434 add_builtin_candidate
2435 (candidates, code, code2, fnname, TREE_VALUE (types[0]),
2436 NULL_TREE, args, argtypes, flags);
2441 /* If TMPL can be successfully instantiated as indicated by
2442 EXPLICIT_TARGS and ARGLIST, adds the instantiation to CANDIDATES.
2444 TMPL is the template. EXPLICIT_TARGS are any explicit template
2445 arguments. ARGLIST is the arguments provided at the call-site.
2446 This does not change ARGLIST. The RETURN_TYPE is the desired type
2447 for conversion operators. If OBJ is NULL_TREE, FLAGS and CTYPE are
2448 as for add_function_candidate. If an OBJ is supplied, FLAGS and
2449 CTYPE are ignored, and OBJ is as for add_conv_candidate. */
2451 static struct z_candidate*
2452 add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
2453 tree ctype, tree explicit_targs, tree first_arg,
2454 const VEC(tree,gc) *arglist, tree return_type,
2455 tree access_path, tree conversion_path,
2456 int flags, tree obj, unification_kind_t strict)
2458 int ntparms = DECL_NTPARMS (tmpl);
2459 tree targs = make_tree_vec (ntparms);
2460 unsigned int len = VEC_length (tree, arglist);
2461 unsigned int nargs = (first_arg == NULL_TREE ? 0 : 1) + len;
2462 unsigned int skip_without_in_chrg = 0;
2463 tree first_arg_without_in_chrg = first_arg;
2464 tree *args_without_in_chrg;
2465 unsigned int nargs_without_in_chrg;
2466 unsigned int ia, ix;
2468 struct z_candidate *cand;
2472 /* We don't do deduction on the in-charge parameter, the VTT
2473 parameter or 'this'. */
2474 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (tmpl))
2476 if (first_arg_without_in_chrg != NULL_TREE)
2477 first_arg_without_in_chrg = NULL_TREE;
2479 ++skip_without_in_chrg;
2482 if ((DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (tmpl)
2483 || DECL_BASE_CONSTRUCTOR_P (tmpl))
2484 && CLASSTYPE_VBASECLASSES (DECL_CONTEXT (tmpl)))
2486 if (first_arg_without_in_chrg != NULL_TREE)
2487 first_arg_without_in_chrg = NULL_TREE;
2489 ++skip_without_in_chrg;
2492 if (len < skip_without_in_chrg)
2495 nargs_without_in_chrg = ((first_arg_without_in_chrg != NULL_TREE ? 1 : 0)
2496 + (len - skip_without_in_chrg));
2497 args_without_in_chrg = XALLOCAVEC (tree, nargs_without_in_chrg);
2499 if (first_arg_without_in_chrg != NULL_TREE)
2501 args_without_in_chrg[ia] = first_arg_without_in_chrg;
2504 for (ix = skip_without_in_chrg;
2505 VEC_iterate (tree, arglist, ix, arg);
2508 args_without_in_chrg[ia] = arg;
2511 gcc_assert (ia == nargs_without_in_chrg);
2513 i = fn_type_unification (tmpl, explicit_targs, targs,
2514 args_without_in_chrg,
2515 nargs_without_in_chrg,
2516 return_type, strict, flags);
2521 fn = instantiate_template (tmpl, targs, tf_none);
2522 if (fn == error_mark_node)
2527 A member function template is never instantiated to perform the
2528 copy of a class object to an object of its class type.
2530 It's a little unclear what this means; the standard explicitly
2531 does allow a template to be used to copy a class. For example,
2536 template <class T> A(const T&);
2539 void g () { A a (f ()); }
2541 the member template will be used to make the copy. The section
2542 quoted above appears in the paragraph that forbids constructors
2543 whose only parameter is (a possibly cv-qualified variant of) the
2544 class type, and a logical interpretation is that the intent was
2545 to forbid the instantiation of member templates which would then
2547 if (DECL_CONSTRUCTOR_P (fn) && nargs == 2)
2549 tree arg_types = FUNCTION_FIRST_USER_PARMTYPE (fn);
2550 if (arg_types && same_type_p (TYPE_MAIN_VARIANT (TREE_VALUE (arg_types)),
2555 if (obj != NULL_TREE)
2556 /* Aha, this is a conversion function. */
2557 cand = add_conv_candidate (candidates, fn, obj, first_arg, arglist,
2558 access_path, conversion_path);
2560 cand = add_function_candidate (candidates, fn, ctype,
2561 first_arg, arglist, access_path,
2562 conversion_path, flags);
2563 if (DECL_TI_TEMPLATE (fn) != tmpl)
2564 /* This situation can occur if a member template of a template
2565 class is specialized. Then, instantiate_template might return
2566 an instantiation of the specialization, in which case the
2567 DECL_TI_TEMPLATE field will point at the original
2568 specialization. For example:
2570 template <class T> struct S { template <class U> void f(U);
2571 template <> void f(int) {}; };
2575 Here, TMPL will be template <class U> S<double>::f(U).
2576 And, instantiate template will give us the specialization
2577 template <> S<double>::f(int). But, the DECL_TI_TEMPLATE field
2578 for this will point at template <class T> template <> S<T>::f(int),
2579 so that we can find the definition. For the purposes of
2580 overload resolution, however, we want the original TMPL. */
2581 cand->template_decl = build_template_info (tmpl, targs);
2583 cand->template_decl = DECL_TEMPLATE_INFO (fn);
2589 static struct z_candidate *
2590 add_template_candidate (struct z_candidate **candidates, tree tmpl, tree ctype,
2591 tree explicit_targs, tree first_arg,
2592 const VEC(tree,gc) *arglist, tree return_type,
2593 tree access_path, tree conversion_path, int flags,
2594 unification_kind_t strict)
2597 add_template_candidate_real (candidates, tmpl, ctype,
2598 explicit_targs, first_arg, arglist,
2599 return_type, access_path, conversion_path,
2600 flags, NULL_TREE, strict);
2604 static struct z_candidate *
2605 add_template_conv_candidate (struct z_candidate **candidates, tree tmpl,
2606 tree obj, tree first_arg,
2607 const VEC(tree,gc) *arglist,
2608 tree return_type, tree access_path,
2609 tree conversion_path)
2612 add_template_candidate_real (candidates, tmpl, NULL_TREE, NULL_TREE,
2613 first_arg, arglist, return_type, access_path,
2614 conversion_path, 0, obj, DEDUCE_CONV);
2617 /* The CANDS are the set of candidates that were considered for
2618 overload resolution. Return the set of viable candidates. If none
2619 of the candidates were viable, set *ANY_VIABLE_P to true. STRICT_P
2620 is true if a candidate should be considered viable only if it is
2623 static struct z_candidate*
2624 splice_viable (struct z_candidate *cands,
2628 struct z_candidate *viable;
2629 struct z_candidate **last_viable;
2630 struct z_candidate **cand;
2633 last_viable = &viable;
2634 *any_viable_p = false;
2639 struct z_candidate *c = *cand;
2640 if (strict_p ? c->viable == 1 : c->viable)
2645 last_viable = &c->next;
2646 *any_viable_p = true;
2652 return viable ? viable : cands;
2656 any_strictly_viable (struct z_candidate *cands)
2658 for (; cands; cands = cands->next)
2659 if (cands->viable == 1)
2664 /* OBJ is being used in an expression like "OBJ.f (...)". In other
2665 words, it is about to become the "this" pointer for a member
2666 function call. Take the address of the object. */
2669 build_this (tree obj)
2671 /* In a template, we are only concerned about the type of the
2672 expression, so we can take a shortcut. */
2673 if (processing_template_decl)
2674 return build_address (obj);
2676 return cp_build_unary_op (ADDR_EXPR, obj, 0, tf_warning_or_error);
2679 /* Returns true iff functions are equivalent. Equivalent functions are
2680 not '==' only if one is a function-local extern function or if
2681 both are extern "C". */
2684 equal_functions (tree fn1, tree fn2)
2686 if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2)
2687 || DECL_EXTERN_C_FUNCTION_P (fn1))
2688 return decls_match (fn1, fn2);
2692 /* Print information about one overload candidate CANDIDATE. MSGSTR
2693 is the text to print before the candidate itself.
2695 NOTE: Unlike most diagnostic functions in GCC, MSGSTR is expected
2696 to have been run through gettext by the caller. This wart makes
2697 life simpler in print_z_candidates and for the translators. */
2700 print_z_candidate (const char *msgstr, struct z_candidate *candidate)
2702 if (TREE_CODE (candidate->fn) == IDENTIFIER_NODE)
2704 if (candidate->num_convs == 3)
2705 inform (input_location, "%s %D(%T, %T, %T) <built-in>", msgstr, candidate->fn,
2706 candidate->convs[0]->type,
2707 candidate->convs[1]->type,
2708 candidate->convs[2]->type);
2709 else if (candidate->num_convs == 2)
2710 inform (input_location, "%s %D(%T, %T) <built-in>", msgstr, candidate->fn,
2711 candidate->convs[0]->type,
2712 candidate->convs[1]->type);
2714 inform (input_location, "%s %D(%T) <built-in>", msgstr, candidate->fn,
2715 candidate->convs[0]->type);
2717 else if (TYPE_P (candidate->fn))
2718 inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
2719 else if (candidate->viable == -1)
2720 inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn);
2721 else if (DECL_DELETED_FN (candidate->fn))
2722 inform (input_location, "%s %+#D <deleted>", msgstr, candidate->fn);
2724 inform (input_location, "%s %+#D", msgstr, candidate->fn);
2728 print_z_candidates (struct z_candidate *candidates)
2731 struct z_candidate *cand1;
2732 struct z_candidate **cand2;
2737 /* Remove deleted candidates. */
2739 for (cand2 = &cand1; *cand2; )
2741 if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
2742 && DECL_DELETED_FN ((*cand2)->fn))
2743 *cand2 = (*cand2)->next;
2745 cand2 = &(*cand2)->next;
2747 /* ...if there are any non-deleted ones. */
2751 /* There may be duplicates in the set of candidates. We put off
2752 checking this condition as long as possible, since we have no way
2753 to eliminate duplicates from a set of functions in less than n^2
2754 time. Now we are about to emit an error message, so it is more
2755 permissible to go slowly. */
2756 for (cand1 = candidates; cand1; cand1 = cand1->next)
2758 tree fn = cand1->fn;
2759 /* Skip builtin candidates and conversion functions. */
2760 if (TREE_CODE (fn) != FUNCTION_DECL)
2762 cand2 = &cand1->next;
2765 if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
2766 && equal_functions (fn, (*cand2)->fn))
2767 *cand2 = (*cand2)->next;
2769 cand2 = &(*cand2)->next;
2773 str = _("candidates are:");
2774 print_z_candidate (str, candidates);
2775 if (candidates->next)
2777 /* Indent successive candidates by the width of the translation
2778 of the above string. */
2779 size_t len = gcc_gettext_width (str) + 1;
2780 char *spaces = (char *) alloca (len);
2781 memset (spaces, ' ', len-1);
2782 spaces[len - 1] = '\0';
2784 candidates = candidates->next;
2787 print_z_candidate (spaces, candidates);
2788 candidates = candidates->next;
2794 /* USER_SEQ is a user-defined conversion sequence, beginning with a
2795 USER_CONV. STD_SEQ is the standard conversion sequence applied to
2796 the result of the conversion function to convert it to the final
2797 desired type. Merge the two sequences into a single sequence,
2798 and return the merged sequence. */
2801 merge_conversion_sequences (conversion *user_seq, conversion *std_seq)
2805 gcc_assert (user_seq->kind == ck_user);
2807 /* Find the end of the second conversion sequence. */
2809 while ((*t)->kind != ck_identity)
2810 t = &((*t)->u.next);
2812 /* Replace the identity conversion with the user conversion
2816 /* The entire sequence is a user-conversion sequence. */
2817 std_seq->user_conv_p = true;
2822 /* Returns the best overload candidate to perform the requested
2823 conversion. This function is used for three the overloading situations
2824 described in [over.match.copy], [over.match.conv], and [over.match.ref].
2825 If TOTYPE is a REFERENCE_TYPE, we're trying to find an lvalue binding as
2826 per [dcl.init.ref], so we ignore temporary bindings. */
2828 static struct z_candidate *
2829 build_user_type_conversion_1 (tree totype, tree expr, int flags)
2831 struct z_candidate *candidates, *cand;
2832 tree fromtype = TREE_TYPE (expr);
2833 tree ctors = NULL_TREE;
2834 tree conv_fns = NULL_TREE;
2835 conversion *conv = NULL;
2836 tree first_arg = NULL_TREE;
2837 VEC(tree,gc) *args = NULL;
2841 /* We represent conversion within a hierarchy using RVALUE_CONV and
2842 BASE_CONV, as specified by [over.best.ics]; these become plain
2843 constructor calls, as specified in [dcl.init]. */
2844 gcc_assert (!MAYBE_CLASS_TYPE_P (fromtype) || !MAYBE_CLASS_TYPE_P (totype)
2845 || !DERIVED_FROM_P (totype, fromtype));
2847 if (MAYBE_CLASS_TYPE_P (totype))
2848 ctors = lookup_fnfields (totype, complete_ctor_identifier, 0);
2850 if (MAYBE_CLASS_TYPE_P (fromtype))
2852 tree to_nonref = non_reference (totype);
2853 if (same_type_ignoring_top_level_qualifiers_p (to_nonref, fromtype) ||
2854 (CLASS_TYPE_P (to_nonref) && CLASS_TYPE_P (fromtype)
2855 && DERIVED_FROM_P (to_nonref, fromtype)))
2857 /* [class.conv.fct] A conversion function is never used to
2858 convert a (possibly cv-qualified) object to the (possibly
2859 cv-qualified) same object type (or a reference to it), to a
2860 (possibly cv-qualified) base class of that type (or a
2861 reference to it)... */
2864 conv_fns = lookup_conversions (fromtype);
2868 flags |= LOOKUP_NO_CONVERSION;
2870 /* It's OK to bind a temporary for converting constructor arguments, but
2871 not in converting the return value of a conversion operator. */
2872 convflags = ((flags & LOOKUP_NO_TEMP_BIND) | LOOKUP_NO_CONVERSION);
2873 flags &= ~LOOKUP_NO_TEMP_BIND;
2877 ctors = BASELINK_FUNCTIONS (ctors);
2879 first_arg = build_int_cst (build_pointer_type (totype), 0);
2880 if (BRACE_ENCLOSED_INITIALIZER_P (expr)
2881 && !TYPE_HAS_LIST_CTOR (totype))
2883 args = ctor_to_vec (expr);
2884 /* We still allow more conversions within an init-list. */
2885 flags = ((flags & ~LOOKUP_NO_CONVERSION)
2886 /* But not for the copy ctor. */
2887 |LOOKUP_NO_COPY_CTOR_CONVERSION
2888 |LOOKUP_NO_NARROWING);
2891 args = make_tree_vector_single (expr);
2893 /* We should never try to call the abstract or base constructor
2895 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (OVL_CURRENT (ctors))
2896 && !DECL_HAS_VTT_PARM_P (OVL_CURRENT (ctors)));
2898 for (; ctors; ctors = OVL_NEXT (ctors))
2900 tree ctor = OVL_CURRENT (ctors);
2901 if (DECL_NONCONVERTING_P (ctor)
2902 && !BRACE_ENCLOSED_INITIALIZER_P (expr))
2905 if (TREE_CODE (ctor) == TEMPLATE_DECL)
2906 cand = add_template_candidate (&candidates, ctor, totype,
2907 NULL_TREE, first_arg, args, NULL_TREE,
2908 TYPE_BINFO (totype),
2909 TYPE_BINFO (totype),
2913 cand = add_function_candidate (&candidates, ctor, totype,
2914 first_arg, args, TYPE_BINFO (totype),
2915 TYPE_BINFO (totype),
2920 cand->second_conv = build_identity_conv (totype, NULL_TREE);
2922 /* If totype isn't a reference, and LOOKUP_NO_TEMP_BIND isn't
2923 set, then this is copy-initialization. In that case, "The
2924 result of the call is then used to direct-initialize the
2925 object that is the destination of the copy-initialization."
2928 We represent this in the conversion sequence with an
2929 rvalue conversion, which means a constructor call. */
2930 if (TREE_CODE (totype) != REFERENCE_TYPE
2931 && !(convflags & LOOKUP_NO_TEMP_BIND))
2933 = build_conv (ck_rvalue, totype, cand->second_conv);
2938 first_arg = build_this (expr);
2940 for (; conv_fns; conv_fns = TREE_CHAIN (conv_fns))
2943 tree conversion_path = TREE_PURPOSE (conv_fns);
2945 /* If we are called to convert to a reference type, we are trying to
2946 find an lvalue binding, so don't even consider temporaries. If
2947 we don't find an lvalue binding, the caller will try again to
2948 look for a temporary binding. */
2949 if (TREE_CODE (totype) == REFERENCE_TYPE)
2950 convflags |= LOOKUP_NO_TEMP_BIND;
2952 for (fns = TREE_VALUE (conv_fns); fns; fns = OVL_NEXT (fns))
2954 tree fn = OVL_CURRENT (fns);
2955 tree first = first_arg;
2957 if (DECL_NONCONVERTING_P (fn)
2958 && (flags & LOOKUP_ONLYCONVERTING))
2961 /* Lambdas have a static conversion op. */
2962 if (DECL_STATIC_FUNCTION_P (fn))
2965 /* [over.match.funcs] For conversion functions, the function
2966 is considered to be a member of the class of the implicit
2967 object argument for the purpose of defining the type of
2968 the implicit object parameter.
2970 So we pass fromtype as CTYPE to add_*_candidate. */
2972 if (TREE_CODE (fn) == TEMPLATE_DECL)
2973 cand = add_template_candidate (&candidates, fn, fromtype,
2975 first, NULL, totype,
2976 TYPE_BINFO (fromtype),
2981 cand = add_function_candidate (&candidates, fn, fromtype,
2983 TYPE_BINFO (fromtype),
2990 = implicit_conversion (totype,
2991 TREE_TYPE (TREE_TYPE (cand->fn)),
2993 /*c_cast_p=*/false, convflags);
2995 /* If LOOKUP_NO_TEMP_BIND isn't set, then this is
2996 copy-initialization. In that case, "The result of the
2997 call is then used to direct-initialize the object that is
2998 the destination of the copy-initialization." [dcl.init]
3000 We represent this in the conversion sequence with an
3001 rvalue conversion, which means a constructor call. But
3002 don't add a second rvalue conversion if there's already
3003 one there. Which there really shouldn't be, but it's
3004 harmless since we'd add it here anyway. */
3005 if (ics && MAYBE_CLASS_TYPE_P (totype) && ics->kind != ck_rvalue
3006 && !(convflags & LOOKUP_NO_TEMP_BIND))
3007 ics = build_conv (ck_rvalue, totype, ics);
3009 cand->second_conv = ics;
3013 else if (candidates->viable == 1 && ics->bad_p)
3019 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3023 cand = tourney (candidates);
3026 if (flags & LOOKUP_COMPLAIN)
3028 error ("conversion from %qT to %qT is ambiguous",
3030 print_z_candidates (candidates);
3033 cand = candidates; /* any one will do */
3034 cand->second_conv = build_ambiguous_conv (totype, expr);
3035 cand->second_conv->user_conv_p = true;
3036 if (!any_strictly_viable (candidates))
3037 cand->second_conv->bad_p = true;
3038 /* If there are viable candidates, don't set ICS_BAD_FLAG; an
3039 ambiguous conversion is no worse than another user-defined
3045 /* Build the user conversion sequence. */
3048 (DECL_CONSTRUCTOR_P (cand->fn)
3049 ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
3050 build_identity_conv (TREE_TYPE (expr), expr));
3053 /* Remember that this was a list-initialization. */
3054 if (flags & LOOKUP_NO_NARROWING)
3055 conv->check_narrowing = true;
3057 /* Combine it with the second conversion sequence. */
3058 cand->second_conv = merge_conversion_sequences (conv,
3061 if (cand->viable == -1)
3062 cand->second_conv->bad_p = true;
3068 build_user_type_conversion (tree totype, tree expr, int flags)
3070 struct z_candidate *cand
3071 = build_user_type_conversion_1 (totype, expr, flags);
3075 if (cand->second_conv->kind == ck_ambig)
3076 return error_mark_node;
3077 expr = convert_like (cand->second_conv, expr, tf_warning_or_error);
3078 return convert_from_reference (expr);
3083 /* Do any initial processing on the arguments to a function call. */
3085 static VEC(tree,gc) *
3086 resolve_args (VEC(tree,gc) *args)
3091 for (ix = 0; VEC_iterate (tree, args, ix, arg); ++ix)
3093 if (error_operand_p (arg))
3095 else if (VOID_TYPE_P (TREE_TYPE (arg)))
3097 error ("invalid use of void expression");
3100 else if (invalid_nonstatic_memfn_p (arg, tf_warning_or_error))
3106 /* Perform overload resolution on FN, which is called with the ARGS.
3108 Return the candidate function selected by overload resolution, or
3109 NULL if the event that overload resolution failed. In the case
3110 that overload resolution fails, *CANDIDATES will be the set of
3111 candidates considered, and ANY_VIABLE_P will be set to true or
3112 false to indicate whether or not any of the candidates were
3115 The ARGS should already have gone through RESOLVE_ARGS before this
3116 function is called. */
3118 static struct z_candidate *
3119 perform_overload_resolution (tree fn,
3120 const VEC(tree,gc) *args,
3121 struct z_candidate **candidates,
3124 struct z_candidate *cand;
3125 tree explicit_targs = NULL_TREE;
3126 int template_only = 0;
3129 *any_viable_p = true;
3132 gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
3133 || TREE_CODE (fn) == TEMPLATE_DECL
3134 || TREE_CODE (fn) == OVERLOAD
3135 || TREE_CODE (fn) == TEMPLATE_ID_EXPR);
3137 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3139 explicit_targs = TREE_OPERAND (fn, 1);
3140 fn = TREE_OPERAND (fn, 0);
3144 /* Add the various candidate functions. */
3145 add_candidates (fn, args, explicit_targs, template_only,
3146 /*conversion_path=*/NULL_TREE,
3147 /*access_path=*/NULL_TREE,
3151 *candidates = splice_viable (*candidates, pedantic, any_viable_p);
3155 cand = tourney (*candidates);
3159 /* Return an expression for a call to FN (a namespace-scope function,
3160 or a static member function) with the ARGS. This may change
3164 build_new_function_call (tree fn, VEC(tree,gc) **args, bool koenig_p,
3165 tsubst_flags_t complain)
3167 struct z_candidate *candidates, *cand;
3172 if (args != NULL && *args != NULL)
3174 *args = resolve_args (*args);
3176 return error_mark_node;
3179 /* If this function was found without using argument dependent
3180 lookup, then we want to ignore any undeclared friend
3186 fn = remove_hidden_names (fn);
3189 if (complain & tf_error)
3190 error ("no matching function for call to %<%D(%A)%>",
3191 DECL_NAME (OVL_CURRENT (orig_fn)),
3192 build_tree_list_vec (*args));
3193 return error_mark_node;
3197 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3198 p = conversion_obstack_alloc (0);
3200 cand = perform_overload_resolution (fn, *args, &candidates, &any_viable_p);
3204 if (complain & tf_error)
3206 if (!any_viable_p && candidates && ! candidates->next)
3207 return cp_build_function_call_vec (candidates->fn, args, complain);
3208 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3209 fn = TREE_OPERAND (fn, 0);
3211 error ("no matching function for call to %<%D(%A)%>",
3212 DECL_NAME (OVL_CURRENT (fn)), build_tree_list_vec (*args));
3214 error ("call of overloaded %<%D(%A)%> is ambiguous",
3215 DECL_NAME (OVL_CURRENT (fn)), build_tree_list_vec (*args));
3217 print_z_candidates (candidates);
3219 result = error_mark_node;
3222 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3224 /* Free all the conversions we allocated. */
3225 obstack_free (&conversion_obstack, p);
3230 /* Build a call to a global operator new. FNNAME is the name of the
3231 operator (either "operator new" or "operator new[]") and ARGS are
3232 the arguments provided. This may change ARGS. *SIZE points to the
3233 total number of bytes required by the allocation, and is updated if
3234 that is changed here. *COOKIE_SIZE is non-NULL if a cookie should
3235 be used. If this function determines that no cookie should be
3236 used, after all, *COOKIE_SIZE is set to NULL_TREE. If FN is
3237 non-NULL, it will be set, upon return, to the allocation function
3241 build_operator_new_call (tree fnname, VEC(tree,gc) **args,
3242 tree *size, tree *cookie_size,
3246 struct z_candidate *candidates;
3247 struct z_candidate *cand;
3252 VEC_safe_insert (tree, gc, *args, 0, *size);
3253 *args = resolve_args (*args);
3255 return error_mark_node;
3261 If this lookup fails to find the name, or if the allocated type
3262 is not a class type, the allocation function's name is looked
3263 up in the global scope.
3265 we disregard block-scope declarations of "operator new". */
3266 fns = lookup_function_nonclass (fnname, *args, /*block_p=*/false);
3268 /* Figure out what function is being called. */
3269 cand = perform_overload_resolution (fns, *args, &candidates, &any_viable_p);
3271 /* If no suitable function could be found, issue an error message
3276 error ("no matching function for call to %<%D(%A)%>",
3277 DECL_NAME (OVL_CURRENT (fns)), build_tree_list_vec (*args));
3279 error ("call of overloaded %<%D(%A)%> is ambiguous",
3280 DECL_NAME (OVL_CURRENT (fns)), build_tree_list_vec (*args));
3282 print_z_candidates (candidates);
3283 return error_mark_node;
3286 /* If a cookie is required, add some extra space. Whether
3287 or not a cookie is required cannot be determined until
3288 after we know which function was called. */
3291 bool use_cookie = true;
3292 if (!abi_version_at_least (2))
3294 /* In G++ 3.2, the check was implemented incorrectly; it
3295 looked at the placement expression, rather than the
3296 type of the function. */
3297 if (VEC_length (tree, *args) == 2
3298 && same_type_p (TREE_TYPE (VEC_index (tree, *args, 1)),
3306 arg_types = TYPE_ARG_TYPES (TREE_TYPE (cand->fn));
3307 /* Skip the size_t parameter. */
3308 arg_types = TREE_CHAIN (arg_types);
3309 /* Check the remaining parameters (if any). */
3311 && TREE_CHAIN (arg_types) == void_list_node
3312 && same_type_p (TREE_VALUE (arg_types),
3316 /* If we need a cookie, adjust the number of bytes allocated. */
3319 /* Update the total size. */
3320 *size = size_binop (PLUS_EXPR, *size, *cookie_size);
3321 /* Update the argument list to reflect the adjusted size. */
3322 VEC_replace (tree, *args, 0, *size);
3325 *cookie_size = NULL_TREE;
3328 /* Tell our caller which function we decided to call. */
3332 /* Build the CALL_EXPR. */
3333 return build_over_call (cand, LOOKUP_NORMAL, tf_warning_or_error);
3336 /* Build a new call to operator(). This may change ARGS. */
3339 build_op_call (tree obj, VEC(tree,gc) **args, tsubst_flags_t complain)
3341 struct z_candidate *candidates = 0, *cand;
3342 tree fns, convs, first_mem_arg = NULL_TREE;
3343 tree type = TREE_TYPE (obj);
3345 tree result = NULL_TREE;
3348 if (error_operand_p (obj))
3349 return error_mark_node;
3351 obj = prep_operand (obj);
3353 if (TYPE_PTRMEMFUNC_P (type))
3355 if (complain & tf_error)
3356 /* It's no good looking for an overloaded operator() on a
3357 pointer-to-member-function. */
3358 error ("pointer-to-member function %E cannot be called without an object; consider using .* or ->*", obj);
3359 return error_mark_node;
3362 if (TYPE_BINFO (type))
3364 fns = lookup_fnfields (TYPE_BINFO (type), ansi_opname (CALL_EXPR), 1);
3365 if (fns == error_mark_node)
3366 return error_mark_node;
3371 if (args != NULL && *args != NULL)
3373 *args = resolve_args (*args);
3375 return error_mark_node;
3378 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3379 p = conversion_obstack_alloc (0);
3383 tree base = BINFO_TYPE (BASELINK_BINFO (fns));
3384 first_mem_arg = build_this (obj);
3386 for (fns = BASELINK_FUNCTIONS (fns); fns; fns = OVL_NEXT (fns))
3388 tree fn = OVL_CURRENT (fns);
3390 tree lfirst = first_mem_arg;
3391 if (DECL_STATIC_FUNCTION_P (fn))
3394 if (TREE_CODE (fn) == TEMPLATE_DECL)
3395 add_template_candidate (&candidates, fn, base, NULL_TREE,
3396 lfirst, *args, NULL_TREE,
3399 LOOKUP_NORMAL, DEDUCE_CALL);
3401 add_function_candidate
3402 (&candidates, fn, base, lfirst, *args, TYPE_BINFO (type),
3403 TYPE_BINFO (type), LOOKUP_NORMAL);
3407 /* Rather than mess with handling static conversion ops here, just don't
3408 look at conversions in lambdas. */
3409 if (LAMBDA_TYPE_P (type))
3412 convs = lookup_conversions (type);
3414 for (; convs; convs = TREE_CHAIN (convs))
3416 tree fns = TREE_VALUE (convs);
3417 tree totype = TREE_TYPE (convs);
3419 if ((TREE_CODE (totype) == POINTER_TYPE
3420 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
3421 || (TREE_CODE (totype) == REFERENCE_TYPE
3422 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
3423 || (TREE_CODE (totype) == REFERENCE_TYPE
3424 && TREE_CODE (TREE_TYPE (totype)) == POINTER_TYPE
3425 && TREE_CODE (TREE_TYPE (TREE_TYPE (totype))) == FUNCTION_TYPE))
3426 for (; fns; fns = OVL_NEXT (fns))
3428 tree fn = OVL_CURRENT (fns);
3430 if (DECL_NONCONVERTING_P (fn))
3433 if (TREE_CODE (fn) == TEMPLATE_DECL)
3434 add_template_conv_candidate
3435 (&candidates, fn, obj, NULL_TREE, *args, totype,
3436 /*access_path=*/NULL_TREE,
3437 /*conversion_path=*/NULL_TREE);
3439 add_conv_candidate (&candidates, fn, obj, NULL_TREE,
3440 *args, /*conversion_path=*/NULL_TREE,
3441 /*access_path=*/NULL_TREE);
3445 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3448 if (complain & tf_error)
3450 error ("no match for call to %<(%T) (%A)%>", TREE_TYPE (obj),
3451 build_tree_list_vec (*args));
3452 print_z_candidates (candidates);
3454 result = error_mark_node;
3458 cand = tourney (candidates);
3461 if (complain & tf_error)
3463 error ("call of %<(%T) (%A)%> is ambiguous",
3464 TREE_TYPE (obj), build_tree_list_vec (*args));
3465 print_z_candidates (candidates);
3467 result = error_mark_node;
3469 /* Since cand->fn will be a type, not a function, for a conversion
3470 function, we must be careful not to unconditionally look at
3472 else if (TREE_CODE (cand->fn) == FUNCTION_DECL
3473 && DECL_OVERLOADED_OPERATOR_P (cand->fn) == CALL_EXPR)
3474 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3477 obj = convert_like_with_context (cand->convs[0], obj, cand->fn, -1,
3479 obj = convert_from_reference (obj);
3480 result = cp_build_function_call_vec (obj, args, complain);
3484 /* Free all the conversions we allocated. */
3485 obstack_free (&conversion_obstack, p);
3491 op_error (enum tree_code code, enum tree_code code2,
3492 tree arg1, tree arg2, tree arg3, const char *problem)
3496 if (code == MODIFY_EXPR)
3497 opname = assignment_operator_name_info[code2].name;
3499 opname = operator_name_info[code].name;
3504 error ("%s for ternary %<operator?:%> in %<%E ? %E : %E%>",
3505 problem, arg1, arg2, arg3);
3508 case POSTINCREMENT_EXPR:
3509 case POSTDECREMENT_EXPR:
3510 error ("%s for %<operator%s%> in %<%E%s%>", problem, opname, arg1, opname);