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, 2010
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"
36 #include "diagnostic-core.h"
40 #include "langhooks.h"
42 /* The various kinds of conversion. */
44 typedef enum conversion_kind {
60 /* The rank of the conversion. Order of the enumerals matters; better
61 conversions should come earlier in the list. */
63 typedef enum conversion_rank {
74 /* An implicit conversion sequence, in the sense of [over.best.ics].
75 The first conversion to be performed is at the end of the chain.
76 That conversion is always a cr_identity conversion. */
78 typedef struct conversion conversion;
80 /* The kind of conversion represented by this step. */
82 /* The rank of this conversion. */
84 BOOL_BITFIELD user_conv_p : 1;
85 BOOL_BITFIELD ellipsis_p : 1;
86 BOOL_BITFIELD this_p : 1;
87 BOOL_BITFIELD bad_p : 1;
88 /* If KIND is ck_ref_bind ck_base_conv, true to indicate that a
89 temporary should be created to hold the result of the
91 BOOL_BITFIELD need_temporary_p : 1;
92 /* If KIND is ck_ptr or ck_pmem, true to indicate that a conversion
93 from a pointer-to-derived to pointer-to-base is being performed. */
94 BOOL_BITFIELD base_p : 1;
95 /* If KIND is ck_ref_bind, true when either an lvalue reference is
96 being bound to an lvalue expression or an rvalue reference is
97 being bound to an rvalue expression. */
98 BOOL_BITFIELD rvaluedness_matches_p: 1;
99 BOOL_BITFIELD check_narrowing: 1;
100 /* The type of the expression resulting from the conversion. */
103 /* The next conversion in the chain. Since the conversions are
104 arranged from outermost to innermost, the NEXT conversion will
105 actually be performed before this conversion. This variant is
106 used only when KIND is neither ck_identity nor ck_ambig. */
108 /* The expression at the beginning of the conversion chain. This
109 variant is used only if KIND is ck_identity or ck_ambig. */
111 /* The array of conversions for an initializer_list. */
114 /* The function candidate corresponding to this conversion
115 sequence. This field is only used if KIND is ck_user. */
116 struct z_candidate *cand;
119 #define CONVERSION_RANK(NODE) \
120 ((NODE)->bad_p ? cr_bad \
121 : (NODE)->ellipsis_p ? cr_ellipsis \
122 : (NODE)->user_conv_p ? cr_user \
125 #define BAD_CONVERSION_RANK(NODE) \
126 ((NODE)->ellipsis_p ? cr_ellipsis \
127 : (NODE)->user_conv_p ? cr_user \
130 static struct obstack conversion_obstack;
131 static bool conversion_obstack_initialized;
133 static struct z_candidate * tourney (struct z_candidate *);
134 static int equal_functions (tree, tree);
135 static int joust (struct z_candidate *, struct z_candidate *, bool);
136 static int compare_ics (conversion *, conversion *);
137 static tree build_over_call (struct z_candidate *, int, tsubst_flags_t);
138 static tree build_java_interface_fn_ref (tree, tree);
139 #define convert_like(CONV, EXPR, COMPLAIN) \
140 convert_like_real ((CONV), (EXPR), NULL_TREE, 0, 0, \
141 /*issue_conversion_warnings=*/true, \
142 /*c_cast_p=*/false, (COMPLAIN))
143 #define convert_like_with_context(CONV, EXPR, FN, ARGNO, COMPLAIN ) \
144 convert_like_real ((CONV), (EXPR), (FN), (ARGNO), 0, \
145 /*issue_conversion_warnings=*/true, \
146 /*c_cast_p=*/false, (COMPLAIN))
147 static tree convert_like_real (conversion *, tree, tree, int, int, bool,
148 bool, tsubst_flags_t);
149 static void op_error (enum tree_code, enum tree_code, tree, tree,
151 static VEC(tree,gc) *resolve_args (VEC(tree,gc) *);
152 static struct z_candidate *build_user_type_conversion_1 (tree, tree, int);
153 static void print_z_candidate (const char *, struct z_candidate *);
154 static void print_z_candidates (struct z_candidate *);
155 static tree build_this (tree);
156 static struct z_candidate *splice_viable (struct z_candidate *, bool, bool *);
157 static bool any_strictly_viable (struct z_candidate *);
158 static struct z_candidate *add_template_candidate
159 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
160 tree, tree, tree, int, unification_kind_t);
161 static struct z_candidate *add_template_candidate_real
162 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
163 tree, tree, tree, int, tree, unification_kind_t);
164 static struct z_candidate *add_template_conv_candidate
165 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
167 static void add_builtin_candidates
168 (struct z_candidate **, enum tree_code, enum tree_code,
170 static void add_builtin_candidate
171 (struct z_candidate **, enum tree_code, enum tree_code,
172 tree, tree, tree, tree *, tree *, int);
173 static bool is_complete (tree);
174 static void build_builtin_candidate
175 (struct z_candidate **, tree, tree, tree, tree *, tree *,
177 static struct z_candidate *add_conv_candidate
178 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
180 static struct z_candidate *add_function_candidate
181 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
183 static conversion *implicit_conversion (tree, tree, tree, bool, int);
184 static conversion *standard_conversion (tree, tree, tree, bool, int);
185 static conversion *reference_binding (tree, tree, tree, bool, int);
186 static conversion *build_conv (conversion_kind, tree, conversion *);
187 static conversion *build_list_conv (tree, tree, int);
188 static bool is_subseq (conversion *, conversion *);
189 static conversion *maybe_handle_ref_bind (conversion **);
190 static void maybe_handle_implicit_object (conversion **);
191 static struct z_candidate *add_candidate
192 (struct z_candidate **, tree, tree, const VEC(tree,gc) *, size_t,
193 conversion **, tree, tree, int);
194 static tree source_type (conversion *);
195 static void add_warning (struct z_candidate *, struct z_candidate *);
196 static bool reference_compatible_p (tree, tree);
197 static conversion *convert_class_to_reference (tree, tree, tree, int);
198 static conversion *direct_reference_binding (tree, conversion *);
199 static bool promoted_arithmetic_type_p (tree);
200 static conversion *conditional_conversion (tree, tree);
201 static char *name_as_c_string (tree, tree, bool *);
202 static tree prep_operand (tree);
203 static void add_candidates (tree, tree, const VEC(tree,gc) *, tree, tree, bool,
204 tree, tree, int, struct z_candidate **);
205 static conversion *merge_conversion_sequences (conversion *, conversion *);
206 static bool magic_varargs_p (tree);
207 static tree build_temp (tree, tree, int, diagnostic_t *, tsubst_flags_t);
209 /* Returns nonzero iff the destructor name specified in NAME matches BASETYPE.
210 NAME can take many forms... */
213 check_dtor_name (tree basetype, tree name)
215 /* Just accept something we've already complained about. */
216 if (name == error_mark_node)
219 if (TREE_CODE (name) == TYPE_DECL)
220 name = TREE_TYPE (name);
221 else if (TYPE_P (name))
223 else if (TREE_CODE (name) == IDENTIFIER_NODE)
225 if ((MAYBE_CLASS_TYPE_P (basetype)
226 && name == constructor_name (basetype))
227 || (TREE_CODE (basetype) == ENUMERAL_TYPE
228 && name == TYPE_IDENTIFIER (basetype)))
231 name = get_type_value (name);
237 template <class T> struct S { ~S(); };
241 NAME will be a class template. */
242 gcc_assert (DECL_CLASS_TEMPLATE_P (name));
246 if (!name || name == error_mark_node)
248 return same_type_p (TYPE_MAIN_VARIANT (basetype), TYPE_MAIN_VARIANT (name));
251 /* We want the address of a function or method. We avoid creating a
252 pointer-to-member function. */
255 build_addr_func (tree function)
257 tree type = TREE_TYPE (function);
259 /* We have to do these by hand to avoid real pointer to member
261 if (TREE_CODE (type) == METHOD_TYPE)
263 if (TREE_CODE (function) == OFFSET_REF)
265 tree object = build_address (TREE_OPERAND (function, 0));
266 return get_member_function_from_ptrfunc (&object,
267 TREE_OPERAND (function, 1));
269 function = build_address (function);
272 function = decay_conversion (function);
277 /* Build a CALL_EXPR, we can handle FUNCTION_TYPEs, METHOD_TYPEs, or
278 POINTER_TYPE to those. Note, pointer to member function types
279 (TYPE_PTRMEMFUNC_P) must be handled by our callers. There are
280 two variants. build_call_a is the primitive taking an array of
281 arguments, while build_call_n is a wrapper that handles varargs. */
284 build_call_n (tree function, int n, ...)
287 return build_call_a (function, 0, NULL);
290 tree *argarray = XALLOCAVEC (tree, n);
295 for (i = 0; i < n; i++)
296 argarray[i] = va_arg (ap, tree);
298 return build_call_a (function, n, argarray);
303 build_call_a (tree function, int n, tree *argarray)
305 int is_constructor = 0;
312 function = build_addr_func (function);
314 gcc_assert (TYPE_PTR_P (TREE_TYPE (function)));
315 fntype = TREE_TYPE (TREE_TYPE (function));
316 gcc_assert (TREE_CODE (fntype) == FUNCTION_TYPE
317 || TREE_CODE (fntype) == METHOD_TYPE);
318 result_type = TREE_TYPE (fntype);
319 /* An rvalue has no cv-qualifiers. */
320 if (SCALAR_TYPE_P (result_type) || VOID_TYPE_P (result_type))
321 result_type = cv_unqualified (result_type);
323 if (TREE_CODE (function) == ADDR_EXPR
324 && TREE_CODE (TREE_OPERAND (function, 0)) == FUNCTION_DECL)
326 decl = TREE_OPERAND (function, 0);
327 if (!TREE_USED (decl))
329 /* We invoke build_call directly for several library
330 functions. These may have been declared normally if
331 we're building libgcc, so we can't just check
333 gcc_assert (DECL_ARTIFICIAL (decl)
334 || !strncmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
342 /* We check both the decl and the type; a function may be known not to
343 throw without being declared throw(). */
344 nothrow = ((decl && TREE_NOTHROW (decl))
345 || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
347 if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain)
348 current_function_returns_abnormally = 1;
350 if (decl && TREE_DEPRECATED (decl))
351 warn_deprecated_use (decl, NULL_TREE);
352 require_complete_eh_spec_types (fntype, decl);
354 if (decl && DECL_CONSTRUCTOR_P (decl))
357 /* Don't pass empty class objects by value. This is useful
358 for tags in STL, which are used to control overload resolution.
359 We don't need to handle other cases of copying empty classes. */
360 if (! decl || ! DECL_BUILT_IN (decl))
361 for (i = 0; i < n; i++)
362 if (is_empty_class (TREE_TYPE (argarray[i]))
363 && ! TREE_ADDRESSABLE (TREE_TYPE (argarray[i])))
365 tree t = build0 (EMPTY_CLASS_EXPR, TREE_TYPE (argarray[i]));
366 argarray[i] = build2 (COMPOUND_EXPR, TREE_TYPE (t),
370 function = build_call_array_loc (input_location,
371 result_type, function, n, argarray);
372 TREE_HAS_CONSTRUCTOR (function) = is_constructor;
373 TREE_NOTHROW (function) = nothrow;
378 /* Build something of the form ptr->method (args)
379 or object.method (args). This can also build
380 calls to constructors, and find friends.
382 Member functions always take their class variable
385 INSTANCE is a class instance.
387 NAME is the name of the method desired, usually an IDENTIFIER_NODE.
389 PARMS help to figure out what that NAME really refers to.
391 BASETYPE_PATH, if non-NULL, contains a chain from the type of INSTANCE
392 down to the real instance type to use for access checking. We need this
393 information to get protected accesses correct.
395 FLAGS is the logical disjunction of zero or more LOOKUP_
396 flags. See cp-tree.h for more info.
398 If this is all OK, calls build_function_call with the resolved
401 This function must also handle being called to perform
402 initialization, promotion/coercion of arguments, and
403 instantiation of default parameters.
405 Note that NAME may refer to an instance variable name. If
406 `operator()()' is defined for the type of that field, then we return
409 /* New overloading code. */
411 typedef struct z_candidate z_candidate;
413 typedef struct candidate_warning candidate_warning;
414 struct candidate_warning {
416 candidate_warning *next;
420 /* The FUNCTION_DECL that will be called if this candidate is
421 selected by overload resolution. */
423 /* If not NULL_TREE, the first argument to use when calling this
426 /* The rest of the arguments to use when calling this function. If
427 there are no further arguments this may be NULL or it may be an
429 const VEC(tree,gc) *args;
430 /* The implicit conversion sequences for each of the arguments to
433 /* The number of implicit conversion sequences. */
435 /* If FN is a user-defined conversion, the standard conversion
436 sequence from the type returned by FN to the desired destination
438 conversion *second_conv;
440 /* If FN is a member function, the binfo indicating the path used to
441 qualify the name of FN at the call site. This path is used to
442 determine whether or not FN is accessible if it is selected by
443 overload resolution. The DECL_CONTEXT of FN will always be a
444 (possibly improper) base of this binfo. */
446 /* If FN is a non-static member function, the binfo indicating the
447 subobject to which the `this' pointer should be converted if FN
448 is selected by overload resolution. The type pointed to the by
449 the `this' pointer must correspond to the most derived class
450 indicated by the CONVERSION_PATH. */
451 tree conversion_path;
454 candidate_warning *warnings;
458 /* Returns true iff T is a null pointer constant in the sense of
462 null_ptr_cst_p (tree t)
466 A null pointer constant is an integral constant expression
467 (_expr.const_) rvalue of integer type that evaluates to zero or
468 an rvalue of type std::nullptr_t. */
469 if (NULLPTR_TYPE_P (TREE_TYPE (t)))
471 if (CP_INTEGRAL_TYPE_P (TREE_TYPE (t)))
473 if (cxx_dialect >= cxx0x)
475 t = fold_non_dependent_expr (t);
476 t = maybe_constant_value (t);
477 if (TREE_CONSTANT (t) && integer_zerop (t))
482 t = integral_constant_value (t);
484 if (integer_zerop (t) && !TREE_OVERFLOW (t))
491 /* Returns nonzero if PARMLIST consists of only default parms and/or
495 sufficient_parms_p (const_tree parmlist)
497 for (; parmlist && parmlist != void_list_node;
498 parmlist = TREE_CHAIN (parmlist))
499 if (!TREE_PURPOSE (parmlist))
504 /* Allocate N bytes of memory from the conversion obstack. The memory
505 is zeroed before being returned. */
508 conversion_obstack_alloc (size_t n)
511 if (!conversion_obstack_initialized)
513 gcc_obstack_init (&conversion_obstack);
514 conversion_obstack_initialized = true;
516 p = obstack_alloc (&conversion_obstack, n);
521 /* Dynamically allocate a conversion. */
524 alloc_conversion (conversion_kind kind)
527 c = (conversion *) conversion_obstack_alloc (sizeof (conversion));
532 #ifdef ENABLE_CHECKING
534 /* Make sure that all memory on the conversion obstack has been
538 validate_conversion_obstack (void)
540 if (conversion_obstack_initialized)
541 gcc_assert ((obstack_next_free (&conversion_obstack)
542 == obstack_base (&conversion_obstack)));
545 #endif /* ENABLE_CHECKING */
547 /* Dynamically allocate an array of N conversions. */
550 alloc_conversions (size_t n)
552 return (conversion **) conversion_obstack_alloc (n * sizeof (conversion *));
556 build_conv (conversion_kind code, tree type, conversion *from)
559 conversion_rank rank = CONVERSION_RANK (from);
561 /* Note that the caller is responsible for filling in t->cand for
562 user-defined conversions. */
563 t = alloc_conversion (code);
586 t->user_conv_p = (code == ck_user || from->user_conv_p);
587 t->bad_p = from->bad_p;
592 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, a
593 specialization of std::initializer_list<T>, if such a conversion is
597 build_list_conv (tree type, tree ctor, int flags)
599 tree elttype = TREE_VEC_ELT (CLASSTYPE_TI_ARGS (type), 0);
600 unsigned len = CONSTRUCTOR_NELTS (ctor);
601 conversion **subconvs = alloc_conversions (len);
606 /* Within a list-initialization we can have more user-defined
608 flags &= ~LOOKUP_NO_CONVERSION;
609 /* But no narrowing conversions. */
610 flags |= LOOKUP_NO_NARROWING;
612 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
615 = implicit_conversion (elttype, TREE_TYPE (val), val,
623 t = alloc_conversion (ck_list);
625 t->u.list = subconvs;
628 for (i = 0; i < len; ++i)
630 conversion *sub = subconvs[i];
631 if (sub->rank > t->rank)
633 if (sub->user_conv_p)
634 t->user_conv_p = true;
642 /* Subroutine of build_aggr_conv: check whether CTOR, a braced-init-list,
643 is a valid aggregate initializer for array type ATYPE. */
646 can_convert_array (tree atype, tree ctor, int flags)
649 tree elttype = TREE_TYPE (atype);
650 for (i = 0; i < CONSTRUCTOR_NELTS (ctor); ++i)
652 tree val = CONSTRUCTOR_ELT (ctor, i)->value;
654 if (TREE_CODE (elttype) == ARRAY_TYPE
655 && TREE_CODE (val) == CONSTRUCTOR)
656 ok = can_convert_array (elttype, val, flags);
658 ok = can_convert_arg (elttype, TREE_TYPE (val), val, flags);
665 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, an
666 aggregate class, if such a conversion is possible. */
669 build_aggr_conv (tree type, tree ctor, int flags)
671 unsigned HOST_WIDE_INT i = 0;
673 tree field = next_initializable_field (TYPE_FIELDS (type));
674 tree empty_ctor = NULL_TREE;
676 for (; field; field = next_initializable_field (DECL_CHAIN (field)))
678 tree ftype = TREE_TYPE (field);
682 if (i < CONSTRUCTOR_NELTS (ctor))
683 val = CONSTRUCTOR_ELT (ctor, i)->value;
686 if (empty_ctor == NULL_TREE)
687 empty_ctor = build_constructor (init_list_type_node, NULL);
692 if (TREE_CODE (ftype) == ARRAY_TYPE
693 && TREE_CODE (val) == CONSTRUCTOR)
694 ok = can_convert_array (ftype, val, flags);
696 ok = can_convert_arg (ftype, TREE_TYPE (val), val, flags);
701 if (TREE_CODE (type) == UNION_TYPE)
705 if (i < CONSTRUCTOR_NELTS (ctor))
708 c = alloc_conversion (ck_aggr);
711 c->user_conv_p = true;
716 /* Build a representation of the identity conversion from EXPR to
717 itself. The TYPE should match the type of EXPR, if EXPR is non-NULL. */
720 build_identity_conv (tree type, tree expr)
724 c = alloc_conversion (ck_identity);
731 /* Converting from EXPR to TYPE was ambiguous in the sense that there
732 were multiple user-defined conversions to accomplish the job.
733 Build a conversion that indicates that ambiguity. */
736 build_ambiguous_conv (tree type, tree expr)
740 c = alloc_conversion (ck_ambig);
748 strip_top_quals (tree t)
750 if (TREE_CODE (t) == ARRAY_TYPE)
752 return cp_build_qualified_type (t, 0);
755 /* Returns the standard conversion path (see [conv]) from type FROM to type
756 TO, if any. For proper handling of null pointer constants, you must
757 also pass the expression EXPR to convert from. If C_CAST_P is true,
758 this conversion is coming from a C-style cast. */
761 standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
764 enum tree_code fcode, tcode;
766 bool fromref = false;
768 to = non_reference (to);
769 if (TREE_CODE (from) == REFERENCE_TYPE)
772 from = TREE_TYPE (from);
774 to = strip_top_quals (to);
775 from = strip_top_quals (from);
777 if ((TYPE_PTRFN_P (to) || TYPE_PTRMEMFUNC_P (to))
778 && expr && type_unknown_p (expr))
780 tsubst_flags_t tflags = tf_conv;
781 if (!(flags & LOOKUP_PROTECT))
782 tflags |= tf_no_access_control;
783 expr = instantiate_type (to, expr, tflags);
784 if (expr == error_mark_node)
786 from = TREE_TYPE (expr);
789 fcode = TREE_CODE (from);
790 tcode = TREE_CODE (to);
792 conv = build_identity_conv (from, expr);
793 if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
795 from = type_decays_to (from);
796 fcode = TREE_CODE (from);
797 conv = build_conv (ck_lvalue, from, conv);
799 else if (fromref || (expr && lvalue_p (expr)))
804 bitfield_type = is_bitfield_expr_with_lowered_type (expr);
807 from = strip_top_quals (bitfield_type);
808 fcode = TREE_CODE (from);
811 conv = build_conv (ck_rvalue, from, conv);
814 /* Allow conversion between `__complex__' data types. */
815 if (tcode == COMPLEX_TYPE && fcode == COMPLEX_TYPE)
817 /* The standard conversion sequence to convert FROM to TO is
818 the standard conversion sequence to perform componentwise
820 conversion *part_conv = standard_conversion
821 (TREE_TYPE (to), TREE_TYPE (from), NULL_TREE, c_cast_p, flags);
825 conv = build_conv (part_conv->kind, to, conv);
826 conv->rank = part_conv->rank;
834 if (same_type_p (from, to))
838 A null pointer constant can be converted to a pointer type; ... A
839 null pointer constant of integral type can be converted to an
840 rvalue of type std::nullptr_t. */
841 if ((tcode == POINTER_TYPE || TYPE_PTR_TO_MEMBER_P (to)
842 || NULLPTR_TYPE_P (to))
843 && expr && null_ptr_cst_p (expr))
844 conv = build_conv (ck_std, to, conv);
845 else if ((tcode == INTEGER_TYPE && fcode == POINTER_TYPE)
846 || (tcode == POINTER_TYPE && fcode == INTEGER_TYPE))
848 /* For backwards brain damage compatibility, allow interconversion of
849 pointers and integers with a pedwarn. */
850 conv = build_conv (ck_std, to, conv);
853 else if (UNSCOPED_ENUM_P (to) && fcode == INTEGER_TYPE)
855 /* For backwards brain damage compatibility, allow interconversion of
856 enums and integers with a pedwarn. */
857 conv = build_conv (ck_std, to, conv);
860 else if ((tcode == POINTER_TYPE && fcode == POINTER_TYPE)
861 || (TYPE_PTRMEM_P (to) && TYPE_PTRMEM_P (from)))
866 if (tcode == POINTER_TYPE
867 && same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (from),
870 else if (VOID_TYPE_P (TREE_TYPE (to))
871 && !TYPE_PTRMEM_P (from)
872 && TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE)
874 tree nfrom = TREE_TYPE (from);
875 if (c_dialect_objc ())
876 nfrom = objc_non_volatilized_type (nfrom);
877 from = build_pointer_type
878 (cp_build_qualified_type (void_type_node,
879 cp_type_quals (nfrom)));
880 conv = build_conv (ck_ptr, from, conv);
882 else if (TYPE_PTRMEM_P (from))
884 tree fbase = TYPE_PTRMEM_CLASS_TYPE (from);
885 tree tbase = TYPE_PTRMEM_CLASS_TYPE (to);
887 if (DERIVED_FROM_P (fbase, tbase)
888 && (same_type_ignoring_top_level_qualifiers_p
889 (TYPE_PTRMEM_POINTED_TO_TYPE (from),
890 TYPE_PTRMEM_POINTED_TO_TYPE (to))))
892 from = build_ptrmem_type (tbase,
893 TYPE_PTRMEM_POINTED_TO_TYPE (from));
894 conv = build_conv (ck_pmem, from, conv);
896 else if (!same_type_p (fbase, tbase))
899 else if (CLASS_TYPE_P (TREE_TYPE (from))
900 && CLASS_TYPE_P (TREE_TYPE (to))
903 An rvalue of type "pointer to cv D," where D is a
904 class type, can be converted to an rvalue of type
905 "pointer to cv B," where B is a base class (clause
906 _class.derived_) of D. If B is an inaccessible
907 (clause _class.access_) or ambiguous
908 (_class.member.lookup_) base class of D, a program
909 that necessitates this conversion is ill-formed.
910 Therefore, we use DERIVED_FROM_P, and do not check
911 access or uniqueness. */
912 && DERIVED_FROM_P (TREE_TYPE (to), TREE_TYPE (from)))
915 cp_build_qualified_type (TREE_TYPE (to),
916 cp_type_quals (TREE_TYPE (from)));
917 from = build_pointer_type (from);
918 conv = build_conv (ck_ptr, from, conv);
922 if (tcode == POINTER_TYPE)
924 to_pointee = TREE_TYPE (to);
925 from_pointee = TREE_TYPE (from);
929 to_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (to);
930 from_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (from);
933 if (same_type_p (from, to))
935 else if (c_cast_p && comp_ptr_ttypes_const (to, from))
936 /* In a C-style cast, we ignore CV-qualification because we
937 are allowed to perform a static_cast followed by a
939 conv = build_conv (ck_qual, to, conv);
940 else if (!c_cast_p && comp_ptr_ttypes (to_pointee, from_pointee))
941 conv = build_conv (ck_qual, to, conv);
942 else if (expr && string_conv_p (to, expr, 0))
943 /* converting from string constant to char *. */
944 conv = build_conv (ck_qual, to, conv);
945 /* Allow conversions among compatible ObjC pointer types (base
946 conversions have been already handled above). */
947 else if (c_dialect_objc ()
948 && objc_compare_types (to, from, -4, NULL_TREE))
949 conv = build_conv (ck_ptr, to, conv);
950 else if (ptr_reasonably_similar (to_pointee, from_pointee))
952 conv = build_conv (ck_ptr, to, conv);
960 else if (TYPE_PTRMEMFUNC_P (to) && TYPE_PTRMEMFUNC_P (from))
962 tree fromfn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (from));
963 tree tofn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (to));
964 tree fbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fromfn)));
965 tree tbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (tofn)));
967 if (!DERIVED_FROM_P (fbase, tbase)
968 || !same_type_p (TREE_TYPE (fromfn), TREE_TYPE (tofn))
969 || !compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)),
970 TREE_CHAIN (TYPE_ARG_TYPES (tofn)))
971 || cp_type_quals (fbase) != cp_type_quals (tbase))
974 from = build_memfn_type (fromfn, tbase, cp_type_quals (tbase));
975 from = build_ptrmemfunc_type (build_pointer_type (from));
976 conv = build_conv (ck_pmem, from, conv);
979 else if (tcode == BOOLEAN_TYPE)
983 An rvalue of arithmetic, unscoped enumeration, pointer, or
984 pointer to member type can be converted to an rvalue of type
985 bool. ... An rvalue of type std::nullptr_t can be converted
986 to an rvalue of type bool; */
987 if (ARITHMETIC_TYPE_P (from)
988 || UNSCOPED_ENUM_P (from)
989 || fcode == POINTER_TYPE
990 || TYPE_PTR_TO_MEMBER_P (from)
991 || NULLPTR_TYPE_P (from))
993 conv = build_conv (ck_std, to, conv);
994 if (fcode == POINTER_TYPE
995 || TYPE_PTRMEM_P (from)
996 || (TYPE_PTRMEMFUNC_P (from)
997 && conv->rank < cr_pbool)
998 || NULLPTR_TYPE_P (from))
999 conv->rank = cr_pbool;
1005 /* We don't check for ENUMERAL_TYPE here because there are no standard
1006 conversions to enum type. */
1007 /* As an extension, allow conversion to complex type. */
1008 else if (ARITHMETIC_TYPE_P (to))
1010 if (! (INTEGRAL_CODE_P (fcode) || fcode == REAL_TYPE)
1011 || SCOPED_ENUM_P (from))
1013 conv = build_conv (ck_std, to, conv);
1015 /* Give this a better rank if it's a promotion. */
1016 if (same_type_p (to, type_promotes_to (from))
1017 && conv->u.next->rank <= cr_promotion)
1018 conv->rank = cr_promotion;
1020 else if (fcode == VECTOR_TYPE && tcode == VECTOR_TYPE
1021 && vector_types_convertible_p (from, to, false))
1022 return build_conv (ck_std, to, conv);
1023 else if (MAYBE_CLASS_TYPE_P (to) && MAYBE_CLASS_TYPE_P (from)
1024 && is_properly_derived_from (from, to))
1026 if (conv->kind == ck_rvalue)
1027 conv = conv->u.next;
1028 conv = build_conv (ck_base, to, conv);
1029 /* The derived-to-base conversion indicates the initialization
1030 of a parameter with base type from an object of a derived
1031 type. A temporary object is created to hold the result of
1032 the conversion unless we're binding directly to a reference. */
1033 conv->need_temporary_p = !(flags & LOOKUP_NO_TEMP_BIND);
1038 if (flags & LOOKUP_NO_NARROWING)
1039 conv->check_narrowing = true;
1044 /* Returns nonzero if T1 is reference-related to T2. */
1047 reference_related_p (tree t1, tree t2)
1049 if (t1 == error_mark_node || t2 == error_mark_node)
1052 t1 = TYPE_MAIN_VARIANT (t1);
1053 t2 = TYPE_MAIN_VARIANT (t2);
1057 Given types "cv1 T1" and "cv2 T2," "cv1 T1" is reference-related
1058 to "cv2 T2" if T1 is the same type as T2, or T1 is a base class
1060 return (same_type_p (t1, t2)
1061 || (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
1062 && DERIVED_FROM_P (t1, t2)));
1065 /* Returns nonzero if T1 is reference-compatible with T2. */
1068 reference_compatible_p (tree t1, tree t2)
1072 "cv1 T1" is reference compatible with "cv2 T2" if T1 is
1073 reference-related to T2 and cv1 is the same cv-qualification as,
1074 or greater cv-qualification than, cv2. */
1075 return (reference_related_p (t1, t2)
1076 && at_least_as_qualified_p (t1, t2));
1079 /* Determine whether or not the EXPR (of class type S) can be
1080 converted to T as in [over.match.ref]. */
1083 convert_class_to_reference (tree reference_type, tree s, tree expr, int flags)
1089 struct z_candidate *candidates;
1090 struct z_candidate *cand;
1096 conversions = lookup_conversions (s);
1102 Assuming that "cv1 T" is the underlying type of the reference
1103 being initialized, and "cv S" is the type of the initializer
1104 expression, with S a class type, the candidate functions are
1105 selected as follows:
1107 --The conversion functions of S and its base classes are
1108 considered. Those that are not hidden within S and yield type
1109 "reference to cv2 T2", where "cv1 T" is reference-compatible
1110 (_dcl.init.ref_) with "cv2 T2", are candidate functions.
1112 The argument list has one argument, which is the initializer
1117 /* Conceptually, we should take the address of EXPR and put it in
1118 the argument list. Unfortunately, however, that can result in
1119 error messages, which we should not issue now because we are just
1120 trying to find a conversion operator. Therefore, we use NULL,
1121 cast to the appropriate type. */
1122 first_arg = build_int_cst (build_pointer_type (s), 0);
1124 t = TREE_TYPE (reference_type);
1126 /* We're performing a user-defined conversion to a desired type, so set
1127 this for the benefit of add_candidates. */
1128 flags |= LOOKUP_NO_CONVERSION;
1130 for (; conversions; conversions = TREE_CHAIN (conversions))
1132 tree fns = TREE_VALUE (conversions);
1133 tree binfo = TREE_PURPOSE (conversions);
1134 struct z_candidate *old_candidates = candidates;;
1136 add_candidates (fns, first_arg, NULL, reference_type,
1138 binfo, TYPE_BINFO (s),
1139 flags, &candidates);
1141 for (cand = candidates; cand != old_candidates; cand = cand->next)
1143 /* Now, see if the conversion function really returns
1144 an lvalue of the appropriate type. From the
1145 point of view of unification, simply returning an
1146 rvalue of the right type is good enough. */
1148 tree t2 = TREE_TYPE (TREE_TYPE (f));
1149 if (TREE_CODE (t2) != REFERENCE_TYPE
1150 || !reference_compatible_p (t, TREE_TYPE (t2)))
1156 conversion *identity_conv;
1157 /* Build a standard conversion sequence indicating the
1158 binding from the reference type returned by the
1159 function to the desired REFERENCE_TYPE. */
1161 = build_identity_conv (TREE_TYPE (TREE_TYPE
1162 (TREE_TYPE (cand->fn))),
1165 = (direct_reference_binding
1166 (reference_type, identity_conv));
1167 cand->second_conv->rvaluedness_matches_p
1168 = TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn)))
1169 == TYPE_REF_IS_RVALUE (reference_type);
1170 cand->second_conv->bad_p |= cand->convs[0]->bad_p;
1172 /* Don't allow binding of lvalues to rvalue references. */
1173 if (TYPE_REF_IS_RVALUE (reference_type)
1174 && !TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn))))
1175 cand->second_conv->bad_p = true;
1180 candidates = splice_viable (candidates, pedantic, &any_viable_p);
1181 /* If none of the conversion functions worked out, let our caller
1186 cand = tourney (candidates);
1190 /* Now that we know that this is the function we're going to use fix
1191 the dummy first argument. */
1192 gcc_assert (cand->first_arg == NULL_TREE
1193 || integer_zerop (cand->first_arg));
1194 cand->first_arg = build_this (expr);
1196 /* Build a user-defined conversion sequence representing the
1198 conv = build_conv (ck_user,
1199 TREE_TYPE (TREE_TYPE (cand->fn)),
1200 build_identity_conv (TREE_TYPE (expr), expr));
1203 if (cand->viable == -1)
1206 /* Merge it with the standard conversion sequence from the
1207 conversion function's return type to the desired type. */
1208 cand->second_conv = merge_conversion_sequences (conv, cand->second_conv);
1210 return cand->second_conv;
1213 /* A reference of the indicated TYPE is being bound directly to the
1214 expression represented by the implicit conversion sequence CONV.
1215 Return a conversion sequence for this binding. */
1218 direct_reference_binding (tree type, conversion *conv)
1222 gcc_assert (TREE_CODE (type) == REFERENCE_TYPE);
1223 gcc_assert (TREE_CODE (conv->type) != REFERENCE_TYPE);
1225 t = TREE_TYPE (type);
1229 When a parameter of reference type binds directly
1230 (_dcl.init.ref_) to an argument expression, the implicit
1231 conversion sequence is the identity conversion, unless the
1232 argument expression has a type that is a derived class of the
1233 parameter type, in which case the implicit conversion sequence is
1234 a derived-to-base Conversion.
1236 If the parameter binds directly to the result of applying a
1237 conversion function to the argument expression, the implicit
1238 conversion sequence is a user-defined conversion sequence
1239 (_over.ics.user_), with the second standard conversion sequence
1240 either an identity conversion or, if the conversion function
1241 returns an entity of a type that is a derived class of the
1242 parameter type, a derived-to-base conversion. */
1243 if (!same_type_ignoring_top_level_qualifiers_p (t, conv->type))
1245 /* Represent the derived-to-base conversion. */
1246 conv = build_conv (ck_base, t, conv);
1247 /* We will actually be binding to the base-class subobject in
1248 the derived class, so we mark this conversion appropriately.
1249 That way, convert_like knows not to generate a temporary. */
1250 conv->need_temporary_p = false;
1252 return build_conv (ck_ref_bind, type, conv);
1255 /* Returns the conversion path from type FROM to reference type TO for
1256 purposes of reference binding. For lvalue binding, either pass a
1257 reference type to FROM or an lvalue expression to EXPR. If the
1258 reference will be bound to a temporary, NEED_TEMPORARY_P is set for
1259 the conversion returned. If C_CAST_P is true, this
1260 conversion is coming from a C-style cast. */
1263 reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
1265 conversion *conv = NULL;
1266 tree to = TREE_TYPE (rto);
1271 cp_lvalue_kind is_lvalue = clk_none;
1273 if (TREE_CODE (to) == FUNCTION_TYPE && expr && type_unknown_p (expr))
1275 expr = instantiate_type (to, expr, tf_none);
1276 if (expr == error_mark_node)
1278 from = TREE_TYPE (expr);
1281 if (TREE_CODE (from) == REFERENCE_TYPE)
1283 /* Anything with reference type is an lvalue. */
1284 is_lvalue = clk_ordinary;
1285 from = TREE_TYPE (from);
1288 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1290 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
1291 conv = implicit_conversion (to, from, expr, c_cast_p,
1293 if (!CLASS_TYPE_P (to)
1294 && CONSTRUCTOR_NELTS (expr) == 1)
1296 expr = CONSTRUCTOR_ELT (expr, 0)->value;
1297 if (error_operand_p (expr))
1299 from = TREE_TYPE (expr);
1303 if (is_lvalue == clk_none && expr)
1304 is_lvalue = real_lvalue_p (expr);
1307 if ((is_lvalue & clk_bitfield) != 0)
1308 tfrom = unlowered_expr_type (expr);
1310 /* Figure out whether or not the types are reference-related and
1311 reference compatible. We have do do this after stripping
1312 references from FROM. */
1313 related_p = reference_related_p (to, tfrom);
1314 /* If this is a C cast, first convert to an appropriately qualified
1315 type, so that we can later do a const_cast to the desired type. */
1316 if (related_p && c_cast_p
1317 && !at_least_as_qualified_p (to, tfrom))
1318 to = cp_build_qualified_type (to, cp_type_quals (tfrom));
1319 compatible_p = reference_compatible_p (to, tfrom);
1321 /* Directly bind reference when target expression's type is compatible with
1322 the reference and expression is an lvalue. In DR391, the wording in
1323 [8.5.3/5 dcl.init.ref] is changed to also require direct bindings for
1324 const and rvalue references to rvalues of compatible class type.
1325 We should also do direct bindings for non-class "rvalues" derived from
1326 rvalue references. */
1329 || (((CP_TYPE_CONST_NON_VOLATILE_P (to)
1330 && !(flags & LOOKUP_NO_TEMP_BIND))
1331 || TYPE_REF_IS_RVALUE (rto))
1332 && (CLASS_TYPE_P (from) || (expr && lvalue_p (expr))))))
1336 If the initializer expression
1338 -- is an lvalue (but not an lvalue for a bit-field), and "cv1 T1"
1339 is reference-compatible with "cv2 T2,"
1341 the reference is bound directly to the initializer expression
1345 If the initializer expression is an rvalue, with T2 a class type,
1346 and "cv1 T1" is reference-compatible with "cv2 T2", the reference
1347 is bound to the object represented by the rvalue or to a sub-object
1348 within that object. */
1350 conv = build_identity_conv (tfrom, expr);
1351 conv = direct_reference_binding (rto, conv);
1353 if (flags & LOOKUP_PREFER_RVALUE)
1354 /* The top-level caller requested that we pretend that the lvalue
1355 be treated as an rvalue. */
1356 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1358 conv->rvaluedness_matches_p
1359 = (TYPE_REF_IS_RVALUE (rto) == !is_lvalue);
1361 if ((is_lvalue & clk_bitfield) != 0
1362 || ((is_lvalue & clk_packed) != 0 && !TYPE_PACKED (to)))
1363 /* For the purposes of overload resolution, we ignore the fact
1364 this expression is a bitfield or packed field. (In particular,
1365 [over.ics.ref] says specifically that a function with a
1366 non-const reference parameter is viable even if the
1367 argument is a bitfield.)
1369 However, when we actually call the function we must create
1370 a temporary to which to bind the reference. If the
1371 reference is volatile, or isn't const, then we cannot make
1372 a temporary, so we just issue an error when the conversion
1374 conv->need_temporary_p = true;
1376 /* Don't allow binding of lvalues to rvalue references. */
1377 if (is_lvalue && TYPE_REF_IS_RVALUE (rto)
1378 && !(flags & LOOKUP_PREFER_RVALUE))
1383 /* [class.conv.fct] A conversion function is never used to convert a
1384 (possibly cv-qualified) object to the (possibly cv-qualified) same
1385 object type (or a reference to it), to a (possibly cv-qualified) base
1386 class of that type (or a reference to it).... */
1387 else if (CLASS_TYPE_P (from) && !related_p
1388 && !(flags & LOOKUP_NO_CONVERSION))
1392 If the initializer expression
1394 -- has a class type (i.e., T2 is a class type) can be
1395 implicitly converted to an lvalue of type "cv3 T3," where
1396 "cv1 T1" is reference-compatible with "cv3 T3". (this
1397 conversion is selected by enumerating the applicable
1398 conversion functions (_over.match.ref_) and choosing the
1399 best one through overload resolution. (_over.match_).
1401 the reference is bound to the lvalue result of the conversion
1402 in the second case. */
1403 conv = convert_class_to_reference (rto, from, expr, flags);
1408 /* From this point on, we conceptually need temporaries, even if we
1409 elide them. Only the cases above are "direct bindings". */
1410 if (flags & LOOKUP_NO_TEMP_BIND)
1415 When a parameter of reference type is not bound directly to an
1416 argument expression, the conversion sequence is the one required
1417 to convert the argument expression to the underlying type of the
1418 reference according to _over.best.ics_. Conceptually, this
1419 conversion sequence corresponds to copy-initializing a temporary
1420 of the underlying type with the argument expression. Any
1421 difference in top-level cv-qualification is subsumed by the
1422 initialization itself and does not constitute a conversion. */
1426 Otherwise, the reference shall be to a non-volatile const type.
1428 Under C++0x, [8.5.3/5 dcl.init.ref] it may also be an rvalue reference */
1429 if (!CP_TYPE_CONST_NON_VOLATILE_P (to) && !TYPE_REF_IS_RVALUE (rto))
1434 Otherwise, a temporary of type "cv1 T1" is created and
1435 initialized from the initializer expression using the rules for a
1436 non-reference copy initialization. If T1 is reference-related to
1437 T2, cv1 must be the same cv-qualification as, or greater
1438 cv-qualification than, cv2; otherwise, the program is ill-formed. */
1439 if (related_p && !at_least_as_qualified_p (to, from))
1442 /* We're generating a temporary now, but don't bind any more in the
1443 conversion (specifically, don't slice the temporary returned by a
1444 conversion operator). */
1445 flags |= LOOKUP_NO_TEMP_BIND;
1447 /* Core issue 899: When [copy-]initializing a temporary to be bound
1448 to the first parameter of a copy constructor (12.8) called with
1449 a single argument in the context of direct-initialization,
1450 explicit conversion functions are also considered.
1452 So don't set LOOKUP_ONLYCONVERTING in that case. */
1453 if (!(flags & LOOKUP_COPY_PARM))
1454 flags |= LOOKUP_ONLYCONVERTING;
1457 conv = implicit_conversion (to, from, expr, c_cast_p,
1462 conv = build_conv (ck_ref_bind, rto, conv);
1463 /* This reference binding, unlike those above, requires the
1464 creation of a temporary. */
1465 conv->need_temporary_p = true;
1466 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1471 /* Returns the implicit conversion sequence (see [over.ics]) from type
1472 FROM to type TO. The optional expression EXPR may affect the
1473 conversion. FLAGS are the usual overloading flags. If C_CAST_P is
1474 true, this conversion is coming from a C-style cast. */
1477 implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
1482 if (from == error_mark_node || to == error_mark_node
1483 || expr == error_mark_node)
1486 if (c_dialect_objc ())
1487 from = objc_non_volatilized_type (from);
1489 if (TREE_CODE (to) == REFERENCE_TYPE)
1490 conv = reference_binding (to, from, expr, c_cast_p, flags);
1492 conv = standard_conversion (to, from, expr, c_cast_p, flags);
1497 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1499 if (is_std_init_list (to))
1500 return build_list_conv (to, expr, flags);
1502 /* Allow conversion from an initializer-list with one element to a
1504 if (SCALAR_TYPE_P (to))
1506 int nelts = CONSTRUCTOR_NELTS (expr);
1510 elt = build_value_init (to, tf_none);
1511 else if (nelts == 1)
1512 elt = CONSTRUCTOR_ELT (expr, 0)->value;
1514 elt = error_mark_node;
1516 conv = implicit_conversion (to, TREE_TYPE (elt), elt,
1520 conv->check_narrowing = true;
1521 if (BRACE_ENCLOSED_INITIALIZER_P (elt))
1522 /* Too many levels of braces, i.e. '{{1}}'. */
1529 if (expr != NULL_TREE
1530 && (MAYBE_CLASS_TYPE_P (from)
1531 || MAYBE_CLASS_TYPE_P (to))
1532 && (flags & LOOKUP_NO_CONVERSION) == 0)
1534 struct z_candidate *cand;
1535 int convflags = (flags & (LOOKUP_NO_TEMP_BIND|LOOKUP_ONLYCONVERTING
1536 |LOOKUP_NO_NARROWING));
1538 if (CLASS_TYPE_P (to)
1539 && !CLASSTYPE_NON_AGGREGATE (complete_type (to))
1540 && BRACE_ENCLOSED_INITIALIZER_P (expr))
1541 return build_aggr_conv (to, expr, flags);
1543 cand = build_user_type_conversion_1 (to, expr, convflags);
1545 conv = cand->second_conv;
1547 /* We used to try to bind a reference to a temporary here, but that
1548 is now handled after the recursive call to this function at the end
1549 of reference_binding. */
1556 /* Add a new entry to the list of candidates. Used by the add_*_candidate
1557 functions. ARGS will not be changed until a single candidate is
1560 static struct z_candidate *
1561 add_candidate (struct z_candidate **candidates,
1562 tree fn, tree first_arg, const VEC(tree,gc) *args,
1563 size_t num_convs, conversion **convs,
1564 tree access_path, tree conversion_path,
1567 struct z_candidate *cand = (struct z_candidate *)
1568 conversion_obstack_alloc (sizeof (struct z_candidate));
1571 cand->first_arg = first_arg;
1573 cand->convs = convs;
1574 cand->num_convs = num_convs;
1575 cand->access_path = access_path;
1576 cand->conversion_path = conversion_path;
1577 cand->viable = viable;
1578 cand->next = *candidates;
1584 /* Create an overload candidate for the function or method FN called
1585 with the argument list FIRST_ARG/ARGS and add it to CANDIDATES.
1586 FLAGS is passed on to implicit_conversion.
1588 This does not change ARGS.
1590 CTYPE, if non-NULL, is the type we want to pretend this function
1591 comes from for purposes of overload resolution. */
1593 static struct z_candidate *
1594 add_function_candidate (struct z_candidate **candidates,
1595 tree fn, tree ctype, tree first_arg,
1596 const VEC(tree,gc) *args, tree access_path,
1597 tree conversion_path, int flags)
1599 tree parmlist = TYPE_ARG_TYPES (TREE_TYPE (fn));
1603 tree orig_first_arg = first_arg;
1607 /* At this point we should not see any functions which haven't been
1608 explicitly declared, except for friend functions which will have
1609 been found using argument dependent lookup. */
1610 gcc_assert (!DECL_ANTICIPATED (fn) || DECL_HIDDEN_FRIEND_P (fn));
1612 /* The `this', `in_chrg' and VTT arguments to constructors are not
1613 considered in overload resolution. */
1614 if (DECL_CONSTRUCTOR_P (fn))
1616 parmlist = skip_artificial_parms_for (fn, parmlist);
1617 skip = num_artificial_parms_for (fn);
1618 if (skip > 0 && first_arg != NULL_TREE)
1621 first_arg = NULL_TREE;
1627 len = VEC_length (tree, args) - skip + (first_arg != NULL_TREE ? 1 : 0);
1628 convs = alloc_conversions (len);
1630 /* 13.3.2 - Viable functions [over.match.viable]
1631 First, to be a viable function, a candidate function shall have enough
1632 parameters to agree in number with the arguments in the list.
1634 We need to check this first; otherwise, checking the ICSes might cause
1635 us to produce an ill-formed template instantiation. */
1637 parmnode = parmlist;
1638 for (i = 0; i < len; ++i)
1640 if (parmnode == NULL_TREE || parmnode == void_list_node)
1642 parmnode = TREE_CHAIN (parmnode);
1645 if (i < len && parmnode)
1648 /* Make sure there are default args for the rest of the parms. */
1649 else if (!sufficient_parms_p (parmnode))
1652 /* Kludge: When looking for a function from a subobject while generating
1653 an implicit copy/move constructor/operator=, don't consider anything
1654 that takes (a reference to) an unrelated type. See c++/44909. */
1656 && ((flags & LOOKUP_SPECULATIVE)
1657 || (current_function_decl
1658 && DECL_DEFAULTED_FN (current_function_decl))))
1660 if (DECL_CONSTRUCTOR_P (fn))
1662 else if (DECL_ASSIGNMENT_OPERATOR_P (fn)
1663 && DECL_OVERLOADED_OPERATOR_P (fn) == NOP_EXPR)
1669 parmnode = chain_index (i-1, parmlist);
1670 if (!reference_related_p (non_reference (TREE_VALUE (parmnode)),
1679 /* Second, for F to be a viable function, there shall exist for each
1680 argument an implicit conversion sequence that converts that argument
1681 to the corresponding parameter of F. */
1683 parmnode = parmlist;
1685 for (i = 0; i < len; ++i)
1691 if (parmnode == void_list_node)
1694 if (i == 0 && first_arg != NULL_TREE)
1697 arg = VEC_index (tree, args,
1698 i + skip - (first_arg != NULL_TREE ? 1 : 0));
1699 argtype = lvalue_type (arg);
1701 is_this = (i == 0 && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
1702 && ! DECL_CONSTRUCTOR_P (fn));
1706 tree parmtype = TREE_VALUE (parmnode);
1709 parmnode = TREE_CHAIN (parmnode);
1711 /* The type of the implicit object parameter ('this') for
1712 overload resolution is not always the same as for the
1713 function itself; conversion functions are considered to
1714 be members of the class being converted, and functions
1715 introduced by a using-declaration are considered to be
1716 members of the class that uses them.
1718 Since build_over_call ignores the ICS for the `this'
1719 parameter, we can just change the parm type. */
1720 if (ctype && is_this)
1722 parmtype = cp_build_qualified_type
1723 (ctype, cp_type_quals (TREE_TYPE (parmtype)));
1724 parmtype = build_pointer_type (parmtype);
1727 /* Core issue 899: When [copy-]initializing a temporary to be bound
1728 to the first parameter of a copy constructor (12.8) called with
1729 a single argument in the context of direct-initialization,
1730 explicit conversion functions are also considered.
1732 So set LOOKUP_COPY_PARM to let reference_binding know that
1733 it's being called in that context. We generalize the above
1734 to handle move constructors and template constructors as well;
1735 the standardese should soon be updated similarly. */
1736 if (ctype && i == 0 && (len-skip == 1)
1737 && !(flags & LOOKUP_ONLYCONVERTING)
1738 && DECL_CONSTRUCTOR_P (fn)
1739 && parmtype != error_mark_node
1740 && (same_type_ignoring_top_level_qualifiers_p
1741 (non_reference (parmtype), ctype)))
1743 lflags |= LOOKUP_COPY_PARM;
1744 /* We allow user-defined conversions within init-lists, but
1745 not for the copy constructor. */
1746 if (flags & LOOKUP_NO_COPY_CTOR_CONVERSION)
1747 lflags |= LOOKUP_NO_CONVERSION;
1750 lflags |= LOOKUP_ONLYCONVERTING;
1752 t = implicit_conversion (parmtype, argtype, arg,
1753 /*c_cast_p=*/false, lflags);
1757 t = build_identity_conv (argtype, arg);
1758 t->ellipsis_p = true;
1776 return add_candidate (candidates, fn, orig_first_arg, args, len, convs,
1777 access_path, conversion_path, viable);
1780 /* Create an overload candidate for the conversion function FN which will
1781 be invoked for expression OBJ, producing a pointer-to-function which
1782 will in turn be called with the argument list FIRST_ARG/ARGLIST,
1783 and add it to CANDIDATES. This does not change ARGLIST. FLAGS is
1784 passed on to implicit_conversion.
1786 Actually, we don't really care about FN; we care about the type it
1787 converts to. There may be multiple conversion functions that will
1788 convert to that type, and we rely on build_user_type_conversion_1 to
1789 choose the best one; so when we create our candidate, we record the type
1790 instead of the function. */
1792 static struct z_candidate *
1793 add_conv_candidate (struct z_candidate **candidates, tree fn, tree obj,
1794 tree first_arg, const VEC(tree,gc) *arglist,
1795 tree access_path, tree conversion_path)
1797 tree totype = TREE_TYPE (TREE_TYPE (fn));
1798 int i, len, viable, flags;
1799 tree parmlist, parmnode;
1802 for (parmlist = totype; TREE_CODE (parmlist) != FUNCTION_TYPE; )
1803 parmlist = TREE_TYPE (parmlist);
1804 parmlist = TYPE_ARG_TYPES (parmlist);
1806 len = VEC_length (tree, arglist) + (first_arg != NULL_TREE ? 1 : 0) + 1;
1807 convs = alloc_conversions (len);
1808 parmnode = parmlist;
1810 flags = LOOKUP_IMPLICIT;
1812 /* Don't bother looking up the same type twice. */
1813 if (*candidates && (*candidates)->fn == totype)
1816 for (i = 0; i < len; ++i)
1823 else if (i == 1 && first_arg != NULL_TREE)
1826 arg = VEC_index (tree, arglist,
1827 i - (first_arg != NULL_TREE ? 1 : 0) - 1);
1828 argtype = lvalue_type (arg);
1831 t = implicit_conversion (totype, argtype, arg, /*c_cast_p=*/false,
1833 else if (parmnode == void_list_node)
1836 t = implicit_conversion (TREE_VALUE (parmnode), argtype, arg,
1837 /*c_cast_p=*/false, flags);
1840 t = build_identity_conv (argtype, arg);
1841 t->ellipsis_p = true;
1855 parmnode = TREE_CHAIN (parmnode);
1861 if (!sufficient_parms_p (parmnode))
1864 return add_candidate (candidates, totype, first_arg, arglist, len, convs,
1865 access_path, conversion_path, viable);
1869 build_builtin_candidate (struct z_candidate **candidates, tree fnname,
1870 tree type1, tree type2, tree *args, tree *argtypes,
1882 num_convs = args[2] ? 3 : (args[1] ? 2 : 1);
1883 convs = alloc_conversions (num_convs);
1885 /* TRUTH_*_EXPR do "contextual conversion to bool", which means explicit
1886 conversion ops are allowed. We handle that here by just checking for
1887 boolean_type_node because other operators don't ask for it. COND_EXPR
1888 also does contextual conversion to bool for the first operand, but we
1889 handle that in build_conditional_expr, and type1 here is operand 2. */
1890 if (type1 != boolean_type_node)
1891 flags |= LOOKUP_ONLYCONVERTING;
1893 for (i = 0; i < 2; ++i)
1898 t = implicit_conversion (types[i], argtypes[i], args[i],
1899 /*c_cast_p=*/false, flags);
1903 /* We need something for printing the candidate. */
1904 t = build_identity_conv (types[i], NULL_TREE);
1911 /* For COND_EXPR we rearranged the arguments; undo that now. */
1914 convs[2] = convs[1];
1915 convs[1] = convs[0];
1916 t = implicit_conversion (boolean_type_node, argtypes[2], args[2],
1917 /*c_cast_p=*/false, flags);
1924 add_candidate (candidates, fnname, /*first_arg=*/NULL_TREE, /*args=*/NULL,
1926 /*access_path=*/NULL_TREE,
1927 /*conversion_path=*/NULL_TREE,
1932 is_complete (tree t)
1934 return COMPLETE_TYPE_P (complete_type (t));
1937 /* Returns nonzero if TYPE is a promoted arithmetic type. */
1940 promoted_arithmetic_type_p (tree type)
1944 In this section, the term promoted integral type is used to refer
1945 to those integral types which are preserved by integral promotion
1946 (including e.g. int and long but excluding e.g. char).
1947 Similarly, the term promoted arithmetic type refers to promoted
1948 integral types plus floating types. */
1949 return ((CP_INTEGRAL_TYPE_P (type)
1950 && same_type_p (type_promotes_to (type), type))
1951 || TREE_CODE (type) == REAL_TYPE);
1954 /* Create any builtin operator overload candidates for the operator in
1955 question given the converted operand types TYPE1 and TYPE2. The other
1956 args are passed through from add_builtin_candidates to
1957 build_builtin_candidate.
1959 TYPE1 and TYPE2 may not be permissible, and we must filter them.
1960 If CODE is requires candidates operands of the same type of the kind
1961 of which TYPE1 and TYPE2 are, we add both candidates
1962 CODE (TYPE1, TYPE1) and CODE (TYPE2, TYPE2). */
1965 add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
1966 enum tree_code code2, tree fnname, tree type1,
1967 tree type2, tree *args, tree *argtypes, int flags)
1971 case POSTINCREMENT_EXPR:
1972 case POSTDECREMENT_EXPR:
1973 args[1] = integer_zero_node;
1974 type2 = integer_type_node;
1983 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
1984 and VQ is either volatile or empty, there exist candidate operator
1985 functions of the form
1986 VQ T& operator++(VQ T&);
1987 T operator++(VQ T&, int);
1988 5 For every pair T, VQ), where T is an enumeration type or an arithmetic
1989 type other than bool, and VQ is either volatile or empty, there exist
1990 candidate operator functions of the form
1991 VQ T& operator--(VQ T&);
1992 T operator--(VQ T&, int);
1993 6 For every pair T, VQ), where T is a cv-qualified or cv-unqualified
1994 complete object type, and VQ is either volatile or empty, there exist
1995 candidate operator functions of the form
1996 T*VQ& operator++(T*VQ&);
1997 T*VQ& operator--(T*VQ&);
1998 T* operator++(T*VQ&, int);
1999 T* operator--(T*VQ&, int); */
2001 case POSTDECREMENT_EXPR:
2002 case PREDECREMENT_EXPR:
2003 if (TREE_CODE (type1) == BOOLEAN_TYPE)
2005 case POSTINCREMENT_EXPR:
2006 case PREINCREMENT_EXPR:
2007 if (ARITHMETIC_TYPE_P (type1) || TYPE_PTROB_P (type1))
2009 type1 = build_reference_type (type1);
2014 /* 7 For every cv-qualified or cv-unqualified complete object type T, there
2015 exist candidate operator functions of the form
2019 8 For every function type T, there exist candidate operator functions of
2021 T& operator*(T*); */
2024 if (TREE_CODE (type1) == POINTER_TYPE
2025 && (TYPE_PTROB_P (type1)
2026 || TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE))
2030 /* 9 For every type T, there exist candidate operator functions of the form
2033 10For every promoted arithmetic type T, there exist candidate operator
2034 functions of the form
2038 case UNARY_PLUS_EXPR: /* unary + */
2039 if (TREE_CODE (type1) == POINTER_TYPE)
2042 if (ARITHMETIC_TYPE_P (type1))
2046 /* 11For every promoted integral type T, there exist candidate operator
2047 functions of the form
2051 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1))
2055 /* 12For every quintuple C1, C2, T, CV1, CV2), where C2 is a class type, C1
2056 is the same type as C2 or is a derived class of C2, T is a complete
2057 object type or a function type, and CV1 and CV2 are cv-qualifier-seqs,
2058 there exist candidate operator functions of the form
2059 CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
2060 where CV12 is the union of CV1 and CV2. */
2063 if (TREE_CODE (type1) == POINTER_TYPE
2064 && TYPE_PTR_TO_MEMBER_P (type2))
2066 tree c1 = TREE_TYPE (type1);
2067 tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
2069 if (MAYBE_CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
2070 && (TYPE_PTRMEMFUNC_P (type2)
2071 || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
2076 /* 13For every pair of promoted arithmetic types L and R, there exist can-
2077 didate operator functions of the form
2082 bool operator<(L, R);
2083 bool operator>(L, R);
2084 bool operator<=(L, R);
2085 bool operator>=(L, R);
2086 bool operator==(L, R);
2087 bool operator!=(L, R);
2088 where LR is the result of the usual arithmetic conversions between
2091 14For every pair of types T and I, where T is a cv-qualified or cv-
2092 unqualified complete object type and I is a promoted integral type,
2093 there exist candidate operator functions of the form
2094 T* operator+(T*, I);
2095 T& operator[](T*, I);
2096 T* operator-(T*, I);
2097 T* operator+(I, T*);
2098 T& operator[](I, T*);
2100 15For every T, where T is a pointer to complete object type, there exist
2101 candidate operator functions of the form112)
2102 ptrdiff_t operator-(T, T);
2104 16For every pointer or enumeration type T, there exist candidate operator
2105 functions of the form
2106 bool operator<(T, T);
2107 bool operator>(T, T);
2108 bool operator<=(T, T);
2109 bool operator>=(T, T);
2110 bool operator==(T, T);
2111 bool operator!=(T, T);
2113 17For every pointer to member type T, there exist candidate operator
2114 functions of the form
2115 bool operator==(T, T);
2116 bool operator!=(T, T); */
2119 if (TYPE_PTROB_P (type1) && TYPE_PTROB_P (type2))
2121 if (TYPE_PTROB_P (type1)
2122 && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2124 type2 = ptrdiff_type_node;
2128 case TRUNC_DIV_EXPR:
2129 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2135 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2136 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2)))
2138 if (TYPE_PTR_TO_MEMBER_P (type1) && null_ptr_cst_p (args[1]))
2143 if (TYPE_PTR_TO_MEMBER_P (type2) && null_ptr_cst_p (args[0]))
2155 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2157 if (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2159 if (TREE_CODE (type1) == ENUMERAL_TYPE
2160 && TREE_CODE (type2) == ENUMERAL_TYPE)
2162 if (TYPE_PTR_P (type1)
2163 && null_ptr_cst_p (args[1])
2164 && !uses_template_parms (type1))
2169 if (null_ptr_cst_p (args[0])
2170 && TYPE_PTR_P (type2)
2171 && !uses_template_parms (type2))
2179 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2182 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && TYPE_PTROB_P (type2))
2184 type1 = ptrdiff_type_node;
2187 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2189 type2 = ptrdiff_type_node;
2194 /* 18For every pair of promoted integral types L and R, there exist candi-
2195 date operator functions of the form
2202 where LR is the result of the usual arithmetic conversions between
2205 case TRUNC_MOD_EXPR:
2211 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2215 /* 19For every triple L, VQ, R), where L is an arithmetic or enumeration
2216 type, VQ is either volatile or empty, and R is a promoted arithmetic
2217 type, there exist candidate operator functions of the form
2218 VQ L& operator=(VQ L&, R);
2219 VQ L& operator*=(VQ L&, R);
2220 VQ L& operator/=(VQ L&, R);
2221 VQ L& operator+=(VQ L&, R);
2222 VQ L& operator-=(VQ L&, R);
2224 20For every pair T, VQ), where T is any type and VQ is either volatile
2225 or empty, there exist candidate operator functions of the form
2226 T*VQ& operator=(T*VQ&, T*);
2228 21For every pair T, VQ), where T is a pointer to member type and VQ is
2229 either volatile or empty, there exist candidate operator functions of
2231 VQ T& operator=(VQ T&, T);
2233 22For every triple T, VQ, I), where T is a cv-qualified or cv-
2234 unqualified complete object type, VQ is either volatile or empty, and
2235 I is a promoted integral type, there exist candidate operator func-
2237 T*VQ& operator+=(T*VQ&, I);
2238 T*VQ& operator-=(T*VQ&, I);
2240 23For every triple L, VQ, R), where L is an integral or enumeration
2241 type, VQ is either volatile or empty, and R is a promoted integral
2242 type, there exist candidate operator functions of the form
2244 VQ L& operator%=(VQ L&, R);
2245 VQ L& operator<<=(VQ L&, R);
2246 VQ L& operator>>=(VQ L&, R);
2247 VQ L& operator&=(VQ L&, R);
2248 VQ L& operator^=(VQ L&, R);
2249 VQ L& operator|=(VQ L&, R); */
2256 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2258 type2 = ptrdiff_type_node;
2262 case TRUNC_DIV_EXPR:
2263 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2267 case TRUNC_MOD_EXPR:
2273 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2278 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2280 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2281 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2282 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2283 || ((TYPE_PTRMEMFUNC_P (type1)
2284 || TREE_CODE (type1) == POINTER_TYPE)
2285 && null_ptr_cst_p (args[1])))
2295 type1 = build_reference_type (type1);
2301 For every pair of promoted arithmetic types L and R, there
2302 exist candidate operator functions of the form
2304 LR operator?(bool, L, R);
2306 where LR is the result of the usual arithmetic conversions
2307 between types L and R.
2309 For every type T, where T is a pointer or pointer-to-member
2310 type, there exist candidate operator functions of the form T
2311 operator?(bool, T, T); */
2313 if (promoted_arithmetic_type_p (type1)
2314 && promoted_arithmetic_type_p (type2))
2318 /* Otherwise, the types should be pointers. */
2319 if (!(TYPE_PTR_P (type1) || TYPE_PTR_TO_MEMBER_P (type1))
2320 || !(TYPE_PTR_P (type2) || TYPE_PTR_TO_MEMBER_P (type2)))
2323 /* We don't check that the two types are the same; the logic
2324 below will actually create two candidates; one in which both
2325 parameter types are TYPE1, and one in which both parameter
2333 /* If we're dealing with two pointer types or two enumeral types,
2334 we need candidates for both of them. */
2335 if (type2 && !same_type_p (type1, type2)
2336 && TREE_CODE (type1) == TREE_CODE (type2)
2337 && (TREE_CODE (type1) == REFERENCE_TYPE
2338 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2339 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2340 || TYPE_PTRMEMFUNC_P (type1)
2341 || MAYBE_CLASS_TYPE_P (type1)
2342 || TREE_CODE (type1) == ENUMERAL_TYPE))
2344 build_builtin_candidate
2345 (candidates, fnname, type1, type1, args, argtypes, flags);
2346 build_builtin_candidate
2347 (candidates, fnname, type2, type2, args, argtypes, flags);
2351 build_builtin_candidate
2352 (candidates, fnname, type1, type2, args, argtypes, flags);
2356 type_decays_to (tree type)
2358 if (TREE_CODE (type) == ARRAY_TYPE)
2359 return build_pointer_type (TREE_TYPE (type));
2360 if (TREE_CODE (type) == FUNCTION_TYPE)
2361 return build_pointer_type (type);
2362 if (!MAYBE_CLASS_TYPE_P (type))
2363 type = cv_unqualified (type);
2367 /* There are three conditions of builtin candidates:
2369 1) bool-taking candidates. These are the same regardless of the input.
2370 2) pointer-pair taking candidates. These are generated for each type
2371 one of the input types converts to.
2372 3) arithmetic candidates. According to the standard, we should generate
2373 all of these, but I'm trying not to...
2375 Here we generate a superset of the possible candidates for this particular
2376 case. That is a subset of the full set the standard defines, plus some
2377 other cases which the standard disallows. add_builtin_candidate will
2378 filter out the invalid set. */
2381 add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
2382 enum tree_code code2, tree fnname, tree *args,
2387 tree type, argtypes[3], t;
2388 /* TYPES[i] is the set of possible builtin-operator parameter types
2389 we will consider for the Ith argument. */
2390 VEC(tree,gc) *types[2];
2393 for (i = 0; i < 3; ++i)
2396 argtypes[i] = unlowered_expr_type (args[i]);
2398 argtypes[i] = NULL_TREE;
2403 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
2404 and VQ is either volatile or empty, there exist candidate operator
2405 functions of the form
2406 VQ T& operator++(VQ T&); */
2408 case POSTINCREMENT_EXPR:
2409 case PREINCREMENT_EXPR:
2410 case POSTDECREMENT_EXPR:
2411 case PREDECREMENT_EXPR:
2416 /* 24There also exist candidate operator functions of the form
2417 bool operator!(bool);
2418 bool operator&&(bool, bool);
2419 bool operator||(bool, bool); */
2421 case TRUTH_NOT_EXPR:
2422 build_builtin_candidate
2423 (candidates, fnname, boolean_type_node,
2424 NULL_TREE, args, argtypes, flags);
2427 case TRUTH_ORIF_EXPR:
2428 case TRUTH_ANDIF_EXPR:
2429 build_builtin_candidate
2430 (candidates, fnname, boolean_type_node,
2431 boolean_type_node, args, argtypes, flags);
2453 types[0] = make_tree_vector ();
2454 types[1] = make_tree_vector ();
2456 for (i = 0; i < 2; ++i)
2460 else if (MAYBE_CLASS_TYPE_P (argtypes[i]))
2464 if (i == 0 && code == MODIFY_EXPR && code2 == NOP_EXPR)
2467 convs = lookup_conversions (argtypes[i]);
2469 if (code == COND_EXPR)
2471 if (real_lvalue_p (args[i]))
2472 VEC_safe_push (tree, gc, types[i],
2473 build_reference_type (argtypes[i]));
2475 VEC_safe_push (tree, gc, types[i],
2476 TYPE_MAIN_VARIANT (argtypes[i]));
2482 for (; convs; convs = TREE_CHAIN (convs))
2484 type = TREE_TYPE (convs);
2487 && (TREE_CODE (type) != REFERENCE_TYPE
2488 || CP_TYPE_CONST_P (TREE_TYPE (type))))
2491 if (code == COND_EXPR && TREE_CODE (type) == REFERENCE_TYPE)
2492 VEC_safe_push (tree, gc, types[i], type);
2494 type = non_reference (type);
2495 if (i != 0 || ! ref1)
2497 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2498 if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
2499 VEC_safe_push (tree, gc, types[i], type);
2500 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2501 type = type_promotes_to (type);
2504 if (! vec_member (type, types[i]))
2505 VEC_safe_push (tree, gc, types[i], type);
2510 if (code == COND_EXPR && real_lvalue_p (args[i]))
2511 VEC_safe_push (tree, gc, types[i],
2512 build_reference_type (argtypes[i]));
2513 type = non_reference (argtypes[i]);
2514 if (i != 0 || ! ref1)
2516 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2517 if (enum_p && UNSCOPED_ENUM_P (type))
2518 VEC_safe_push (tree, gc, types[i], type);
2519 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2520 type = type_promotes_to (type);
2522 VEC_safe_push (tree, gc, types[i], type);
2526 /* Run through the possible parameter types of both arguments,
2527 creating candidates with those parameter types. */
2528 FOR_EACH_VEC_ELT_REVERSE (tree, types[0], ix, t)
2533 if (!VEC_empty (tree, types[1]))
2534 FOR_EACH_VEC_ELT_REVERSE (tree, types[1], jx, u)
2535 add_builtin_candidate
2536 (candidates, code, code2, fnname, t,
2537 u, args, argtypes, flags);
2539 add_builtin_candidate
2540 (candidates, code, code2, fnname, t,
2541 NULL_TREE, args, argtypes, flags);
2544 release_tree_vector (types[0]);
2545 release_tree_vector (types[1]);
2549 /* If TMPL can be successfully instantiated as indicated by
2550 EXPLICIT_TARGS and ARGLIST, adds the instantiation to CANDIDATES.
2552 TMPL is the template. EXPLICIT_TARGS are any explicit template
2553 arguments. ARGLIST is the arguments provided at the call-site.
2554 This does not change ARGLIST. The RETURN_TYPE is the desired type
2555 for conversion operators. If OBJ is NULL_TREE, FLAGS and CTYPE are
2556 as for add_function_candidate. If an OBJ is supplied, FLAGS and
2557 CTYPE are ignored, and OBJ is as for add_conv_candidate. */
2559 static struct z_candidate*
2560 add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
2561 tree ctype, tree explicit_targs, tree first_arg,
2562 const VEC(tree,gc) *arglist, tree return_type,
2563 tree access_path, tree conversion_path,
2564 int flags, tree obj, unification_kind_t strict)
2566 int ntparms = DECL_NTPARMS (tmpl);
2567 tree targs = make_tree_vec (ntparms);
2568 unsigned int len = VEC_length (tree, arglist);
2569 unsigned int nargs = (first_arg == NULL_TREE ? 0 : 1) + len;
2570 unsigned int skip_without_in_chrg = 0;
2571 tree first_arg_without_in_chrg = first_arg;
2572 tree *args_without_in_chrg;
2573 unsigned int nargs_without_in_chrg;
2574 unsigned int ia, ix;
2576 struct z_candidate *cand;
2580 /* We don't do deduction on the in-charge parameter, the VTT
2581 parameter or 'this'. */
2582 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (tmpl))
2584 if (first_arg_without_in_chrg != NULL_TREE)
2585 first_arg_without_in_chrg = NULL_TREE;
2587 ++skip_without_in_chrg;
2590 if ((DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (tmpl)
2591 || DECL_BASE_CONSTRUCTOR_P (tmpl))
2592 && CLASSTYPE_VBASECLASSES (DECL_CONTEXT (tmpl)))
2594 if (first_arg_without_in_chrg != NULL_TREE)
2595 first_arg_without_in_chrg = NULL_TREE;
2597 ++skip_without_in_chrg;
2600 if (len < skip_without_in_chrg)
2603 nargs_without_in_chrg = ((first_arg_without_in_chrg != NULL_TREE ? 1 : 0)
2604 + (len - skip_without_in_chrg));
2605 args_without_in_chrg = XALLOCAVEC (tree, nargs_without_in_chrg);
2607 if (first_arg_without_in_chrg != NULL_TREE)
2609 args_without_in_chrg[ia] = first_arg_without_in_chrg;
2612 for (ix = skip_without_in_chrg;
2613 VEC_iterate (tree, arglist, ix, arg);
2616 args_without_in_chrg[ia] = arg;
2619 gcc_assert (ia == nargs_without_in_chrg);
2621 i = fn_type_unification (tmpl, explicit_targs, targs,
2622 args_without_in_chrg,
2623 nargs_without_in_chrg,
2624 return_type, strict, flags);
2629 fn = instantiate_template (tmpl, targs, tf_none);
2630 if (fn == error_mark_node)
2635 A member function template is never instantiated to perform the
2636 copy of a class object to an object of its class type.
2638 It's a little unclear what this means; the standard explicitly
2639 does allow a template to be used to copy a class. For example,
2644 template <class T> A(const T&);
2647 void g () { A a (f ()); }
2649 the member template will be used to make the copy. The section
2650 quoted above appears in the paragraph that forbids constructors
2651 whose only parameter is (a possibly cv-qualified variant of) the
2652 class type, and a logical interpretation is that the intent was
2653 to forbid the instantiation of member templates which would then
2655 if (DECL_CONSTRUCTOR_P (fn) && nargs == 2)
2657 tree arg_types = FUNCTION_FIRST_USER_PARMTYPE (fn);
2658 if (arg_types && same_type_p (TYPE_MAIN_VARIANT (TREE_VALUE (arg_types)),
2663 if (obj != NULL_TREE)
2664 /* Aha, this is a conversion function. */
2665 cand = add_conv_candidate (candidates, fn, obj, first_arg, arglist,
2666 access_path, conversion_path);
2668 cand = add_function_candidate (candidates, fn, ctype,
2669 first_arg, arglist, access_path,
2670 conversion_path, flags);
2671 if (DECL_TI_TEMPLATE (fn) != tmpl)
2672 /* This situation can occur if a member template of a template
2673 class is specialized. Then, instantiate_template might return
2674 an instantiation of the specialization, in which case the
2675 DECL_TI_TEMPLATE field will point at the original
2676 specialization. For example:
2678 template <class T> struct S { template <class U> void f(U);
2679 template <> void f(int) {}; };
2683 Here, TMPL will be template <class U> S<double>::f(U).
2684 And, instantiate template will give us the specialization
2685 template <> S<double>::f(int). But, the DECL_TI_TEMPLATE field
2686 for this will point at template <class T> template <> S<T>::f(int),
2687 so that we can find the definition. For the purposes of
2688 overload resolution, however, we want the original TMPL. */
2689 cand->template_decl = build_template_info (tmpl, targs);
2691 cand->template_decl = DECL_TEMPLATE_INFO (fn);
2692 cand->explicit_targs = explicit_targs;
2696 return add_candidate (candidates, tmpl, first_arg, arglist, nargs, NULL,
2697 access_path, conversion_path, 0);
2701 static struct z_candidate *
2702 add_template_candidate (struct z_candidate **candidates, tree tmpl, tree ctype,
2703 tree explicit_targs, tree first_arg,
2704 const VEC(tree,gc) *arglist, tree return_type,
2705 tree access_path, tree conversion_path, int flags,
2706 unification_kind_t strict)
2709 add_template_candidate_real (candidates, tmpl, ctype,
2710 explicit_targs, first_arg, arglist,
2711 return_type, access_path, conversion_path,
2712 flags, NULL_TREE, strict);
2716 static struct z_candidate *
2717 add_template_conv_candidate (struct z_candidate **candidates, tree tmpl,
2718 tree obj, tree first_arg,
2719 const VEC(tree,gc) *arglist,
2720 tree return_type, tree access_path,
2721 tree conversion_path)
2724 add_template_candidate_real (candidates, tmpl, NULL_TREE, NULL_TREE,
2725 first_arg, arglist, return_type, access_path,
2726 conversion_path, 0, obj, DEDUCE_CONV);
2729 /* The CANDS are the set of candidates that were considered for
2730 overload resolution. Return the set of viable candidates, or CANDS
2731 if none are viable. If any of the candidates were viable, set
2732 *ANY_VIABLE_P to true. STRICT_P is true if a candidate should be
2733 considered viable only if it is strictly viable. */
2735 static struct z_candidate*
2736 splice_viable (struct z_candidate *cands,
2740 struct z_candidate *viable;
2741 struct z_candidate **last_viable;
2742 struct z_candidate **cand;
2745 last_viable = &viable;
2746 *any_viable_p = false;
2751 struct z_candidate *c = *cand;
2752 if (strict_p ? c->viable == 1 : c->viable)
2757 last_viable = &c->next;
2758 *any_viable_p = true;
2764 return viable ? viable : cands;
2768 any_strictly_viable (struct z_candidate *cands)
2770 for (; cands; cands = cands->next)
2771 if (cands->viable == 1)
2776 /* OBJ is being used in an expression like "OBJ.f (...)". In other
2777 words, it is about to become the "this" pointer for a member
2778 function call. Take the address of the object. */
2781 build_this (tree obj)
2783 /* In a template, we are only concerned about the type of the
2784 expression, so we can take a shortcut. */
2785 if (processing_template_decl)
2786 return build_address (obj);
2788 return cp_build_addr_expr (obj, tf_warning_or_error);
2791 /* Returns true iff functions are equivalent. Equivalent functions are
2792 not '==' only if one is a function-local extern function or if
2793 both are extern "C". */
2796 equal_functions (tree fn1, tree fn2)
2798 if (TREE_CODE (fn1) != TREE_CODE (fn2))
2800 if (TREE_CODE (fn1) == TEMPLATE_DECL)
2802 if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2)
2803 || DECL_EXTERN_C_FUNCTION_P (fn1))
2804 return decls_match (fn1, fn2);
2808 /* Print information about one overload candidate CANDIDATE. MSGSTR
2809 is the text to print before the candidate itself.
2811 NOTE: Unlike most diagnostic functions in GCC, MSGSTR is expected
2812 to have been run through gettext by the caller. This wart makes
2813 life simpler in print_z_candidates and for the translators. */
2816 print_z_candidate (const char *msgstr, struct z_candidate *candidate)
2818 if (TREE_CODE (candidate->fn) == IDENTIFIER_NODE)
2820 if (candidate->num_convs == 3)
2821 inform (input_location, "%s %D(%T, %T, %T) <built-in>", msgstr, candidate->fn,
2822 candidate->convs[0]->type,
2823 candidate->convs[1]->type,
2824 candidate->convs[2]->type);
2825 else if (candidate->num_convs == 2)
2826 inform (input_location, "%s %D(%T, %T) <built-in>", msgstr, candidate->fn,
2827 candidate->convs[0]->type,
2828 candidate->convs[1]->type);
2830 inform (input_location, "%s %D(%T) <built-in>", msgstr, candidate->fn,
2831 candidate->convs[0]->type);
2833 else if (TYPE_P (candidate->fn))
2834 inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
2835 else if (candidate->viable == -1)
2836 inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn);
2837 else if (DECL_DELETED_FN (STRIP_TEMPLATE (candidate->fn)))
2838 inform (input_location, "%s %+#D <deleted>", msgstr, candidate->fn);
2840 inform (input_location, "%s %+#D", msgstr, candidate->fn);
2844 print_z_candidates (struct z_candidate *candidates)
2847 struct z_candidate *cand1;
2848 struct z_candidate **cand2;
2854 /* Remove non-viable deleted candidates. */
2856 for (cand2 = &cand1; *cand2; )
2858 if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
2859 && !(*cand2)->viable
2860 && DECL_DELETED_FN ((*cand2)->fn))
2861 *cand2 = (*cand2)->next;
2863 cand2 = &(*cand2)->next;
2865 /* ...if there are any non-deleted ones. */
2869 /* There may be duplicates in the set of candidates. We put off
2870 checking this condition as long as possible, since we have no way
2871 to eliminate duplicates from a set of functions in less than n^2
2872 time. Now we are about to emit an error message, so it is more
2873 permissible to go slowly. */
2874 for (cand1 = candidates; cand1; cand1 = cand1->next)
2876 tree fn = cand1->fn;
2877 /* Skip builtin candidates and conversion functions. */
2880 cand2 = &cand1->next;
2883 if (DECL_P ((*cand2)->fn)
2884 && equal_functions (fn, (*cand2)->fn))
2885 *cand2 = (*cand2)->next;
2887 cand2 = &(*cand2)->next;
2891 str = candidates->next ? _("candidates are:") : _("candidate is:");
2893 for (; candidates; candidates = candidates->next)
2895 print_z_candidate (spaces ? spaces : str, candidates);
2896 spaces = spaces ? spaces : get_spaces (str);
2901 /* USER_SEQ is a user-defined conversion sequence, beginning with a
2902 USER_CONV. STD_SEQ is the standard conversion sequence applied to
2903 the result of the conversion function to convert it to the final
2904 desired type. Merge the two sequences into a single sequence,
2905 and return the merged sequence. */
2908 merge_conversion_sequences (conversion *user_seq, conversion *std_seq)
2912 gcc_assert (user_seq->kind == ck_user);
2914 /* Find the end of the second conversion sequence. */
2916 while ((*t)->kind != ck_identity)
2917 t = &((*t)->u.next);
2919 /* Replace the identity conversion with the user conversion
2923 /* The entire sequence is a user-conversion sequence. */
2924 std_seq->user_conv_p = true;
2929 /* Handle overload resolution for initializing an object of class type from
2930 an initializer list. First we look for a suitable constructor that
2931 takes a std::initializer_list; if we don't find one, we then look for a
2932 non-list constructor.
2934 Parameters are as for add_candidates, except that the arguments are in
2935 the form of a CONSTRUCTOR (the initializer list) rather than a VEC, and
2936 the RETURN_TYPE parameter is replaced by TOTYPE, the desired type. */
2939 add_list_candidates (tree fns, tree first_arg,
2940 tree init_list, tree totype,
2941 tree explicit_targs, bool template_only,
2942 tree conversion_path, tree access_path,
2944 struct z_candidate **candidates)
2948 gcc_assert (*candidates == NULL);
2950 /* For list-initialization we consider explicit constructors, but
2951 give an error if one is selected. */
2952 flags &= ~LOOKUP_ONLYCONVERTING;
2953 /* And we don't allow narrowing conversions. We also use this flag to
2954 avoid the copy constructor call for copy-list-initialization. */
2955 flags |= LOOKUP_NO_NARROWING;
2957 /* Always use the default constructor if the list is empty (DR 990). */
2958 if (CONSTRUCTOR_NELTS (init_list) == 0
2959 && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype))
2961 /* If the class has a list ctor, try passing the list as a single
2962 argument first, but only consider list ctors. */
2963 else if (TYPE_HAS_LIST_CTOR (totype))
2965 flags |= LOOKUP_LIST_ONLY;
2966 args = make_tree_vector_single (init_list);
2967 add_candidates (fns, first_arg, args, NULL_TREE,
2968 explicit_targs, template_only, conversion_path,
2969 access_path, flags, candidates);
2970 if (any_strictly_viable (*candidates))
2974 args = ctor_to_vec (init_list);
2976 /* We aren't looking for list-ctors anymore. */
2977 flags &= ~LOOKUP_LIST_ONLY;
2978 /* We allow more user-defined conversions within an init-list. */
2979 flags &= ~LOOKUP_NO_CONVERSION;
2980 /* But not for the copy ctor. */
2981 flags |= LOOKUP_NO_COPY_CTOR_CONVERSION;
2983 add_candidates (fns, first_arg, args, NULL_TREE,
2984 explicit_targs, template_only, conversion_path,
2985 access_path, flags, candidates);
2988 /* Returns the best overload candidate to perform the requested
2989 conversion. This function is used for three the overloading situations
2990 described in [over.match.copy], [over.match.conv], and [over.match.ref].
2991 If TOTYPE is a REFERENCE_TYPE, we're trying to find an lvalue binding as
2992 per [dcl.init.ref], so we ignore temporary bindings. */
2994 static struct z_candidate *
2995 build_user_type_conversion_1 (tree totype, tree expr, int flags)
2997 struct z_candidate *candidates, *cand;
2998 tree fromtype = TREE_TYPE (expr);
2999 tree ctors = NULL_TREE;
3000 tree conv_fns = NULL_TREE;
3001 conversion *conv = NULL;
3002 tree first_arg = NULL_TREE;
3003 VEC(tree,gc) *args = NULL;
3007 /* We represent conversion within a hierarchy using RVALUE_CONV and
3008 BASE_CONV, as specified by [over.best.ics]; these become plain
3009 constructor calls, as specified in [dcl.init]. */
3010 gcc_assert (!MAYBE_CLASS_TYPE_P (fromtype) || !MAYBE_CLASS_TYPE_P (totype)
3011 || !DERIVED_FROM_P (totype, fromtype));
3013 if (MAYBE_CLASS_TYPE_P (totype))
3014 ctors = lookup_fnfields (totype, complete_ctor_identifier, 0);
3016 if (MAYBE_CLASS_TYPE_P (fromtype))
3018 tree to_nonref = non_reference (totype);
3019 if (same_type_ignoring_top_level_qualifiers_p (to_nonref, fromtype) ||
3020 (CLASS_TYPE_P (to_nonref) && CLASS_TYPE_P (fromtype)
3021 && DERIVED_FROM_P (to_nonref, fromtype)))
3023 /* [class.conv.fct] A conversion function is never used to
3024 convert a (possibly cv-qualified) object to the (possibly
3025 cv-qualified) same object type (or a reference to it), to a
3026 (possibly cv-qualified) base class of that type (or a
3027 reference to it)... */
3030 conv_fns = lookup_conversions (fromtype);
3034 flags |= LOOKUP_NO_CONVERSION;
3035 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
3036 flags |= LOOKUP_NO_NARROWING;
3038 /* It's OK to bind a temporary for converting constructor arguments, but
3039 not in converting the return value of a conversion operator. */
3040 convflags = ((flags & LOOKUP_NO_TEMP_BIND) | LOOKUP_NO_CONVERSION);
3041 flags &= ~LOOKUP_NO_TEMP_BIND;
3045 int ctorflags = flags;
3046 ctors = BASELINK_FUNCTIONS (ctors);
3048 first_arg = build_int_cst (build_pointer_type (totype), 0);
3050 /* We should never try to call the abstract or base constructor
3052 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (OVL_CURRENT (ctors))
3053 && !DECL_HAS_VTT_PARM_P (OVL_CURRENT (ctors)));
3055 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
3057 /* List-initialization. */
3058 add_list_candidates (ctors, first_arg, expr, totype, NULL_TREE,
3059 false, TYPE_BINFO (totype), TYPE_BINFO (totype),
3060 ctorflags, &candidates);
3064 args = make_tree_vector_single (expr);
3065 add_candidates (ctors, first_arg, args, NULL_TREE, NULL_TREE, false,
3066 TYPE_BINFO (totype), TYPE_BINFO (totype),
3067 ctorflags, &candidates);
3070 for (cand = candidates; cand; cand = cand->next)
3072 cand->second_conv = build_identity_conv (totype, NULL_TREE);
3074 /* If totype isn't a reference, and LOOKUP_NO_TEMP_BIND isn't
3075 set, then this is copy-initialization. In that case, "The
3076 result of the call is then used to direct-initialize the
3077 object that is the destination of the copy-initialization."
3080 We represent this in the conversion sequence with an
3081 rvalue conversion, which means a constructor call. */
3082 if (TREE_CODE (totype) != REFERENCE_TYPE
3083 && !(convflags & LOOKUP_NO_TEMP_BIND))
3085 = build_conv (ck_rvalue, totype, cand->second_conv);
3090 first_arg = build_this (expr);
3092 for (; conv_fns; conv_fns = TREE_CHAIN (conv_fns))
3094 tree conversion_path = TREE_PURPOSE (conv_fns);
3095 struct z_candidate *old_candidates;
3097 /* If we are called to convert to a reference type, we are trying to
3098 find an lvalue binding, so don't even consider temporaries. If
3099 we don't find an lvalue binding, the caller will try again to
3100 look for a temporary binding. */
3101 if (TREE_CODE (totype) == REFERENCE_TYPE)
3102 convflags |= LOOKUP_NO_TEMP_BIND;
3104 old_candidates = candidates;
3105 add_candidates (TREE_VALUE (conv_fns), first_arg, NULL, totype,
3107 conversion_path, TYPE_BINFO (fromtype),
3108 flags, &candidates);
3110 for (cand = candidates; cand != old_candidates; cand = cand->next)
3113 = implicit_conversion (totype,
3114 TREE_TYPE (TREE_TYPE (cand->fn)),
3116 /*c_cast_p=*/false, convflags);
3118 /* If LOOKUP_NO_TEMP_BIND isn't set, then this is
3119 copy-initialization. In that case, "The result of the
3120 call is then used to direct-initialize the object that is
3121 the destination of the copy-initialization." [dcl.init]
3123 We represent this in the conversion sequence with an
3124 rvalue conversion, which means a constructor call. But
3125 don't add a second rvalue conversion if there's already
3126 one there. Which there really shouldn't be, but it's
3127 harmless since we'd add it here anyway. */
3128 if (ics && MAYBE_CLASS_TYPE_P (totype) && ics->kind != ck_rvalue
3129 && !(convflags & LOOKUP_NO_TEMP_BIND))
3130 ics = build_conv (ck_rvalue, totype, ics);
3132 cand->second_conv = ics;
3136 else if (cand->viable == 1 && ics->bad_p)
3141 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3145 cand = tourney (candidates);
3148 if (flags & LOOKUP_COMPLAIN)
3150 error ("conversion from %qT to %qT is ambiguous",
3152 print_z_candidates (candidates);
3155 cand = candidates; /* any one will do */
3156 cand->second_conv = build_ambiguous_conv (totype, expr);
3157 cand->second_conv->user_conv_p = true;
3158 if (!any_strictly_viable (candidates))
3159 cand->second_conv->bad_p = true;
3160 /* If there are viable candidates, don't set ICS_BAD_FLAG; an
3161 ambiguous conversion is no worse than another user-defined
3167 /* Build the user conversion sequence. */
3170 (DECL_CONSTRUCTOR_P (cand->fn)
3171 ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
3172 build_identity_conv (TREE_TYPE (expr), expr));
3175 /* Remember that this was a list-initialization. */
3176 if (flags & LOOKUP_NO_NARROWING)
3177 conv->check_narrowing = true;
3179 /* Combine it with the second conversion sequence. */
3180 cand->second_conv = merge_conversion_sequences (conv,
3183 if (cand->viable == -1)
3184 cand->second_conv->bad_p = true;
3190 build_user_type_conversion (tree totype, tree expr, int flags)
3192 struct z_candidate *cand
3193 = build_user_type_conversion_1 (totype, expr, flags);
3197 if (cand->second_conv->kind == ck_ambig)
3198 return error_mark_node;
3199 expr = convert_like (cand->second_conv, expr, tf_warning_or_error);
3200 return convert_from_reference (expr);
3205 /* Subroutine of convert_nontype_argument.
3207 EXPR is an argument for a template non-type parameter of integral or
3208 enumeration type. Do any necessary conversions (that are permitted for
3209 non-type arguments) to convert it to the parameter type.
3211 If conversion is successful, returns the converted expression;
3212 otherwise, returns error_mark_node. */
3215 build_integral_nontype_arg_conv (tree type, tree expr, tsubst_flags_t complain)
3221 if (error_operand_p (expr))
3222 return error_mark_node;
3224 gcc_assert (INTEGRAL_OR_ENUMERATION_TYPE_P (type));
3226 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3227 p = conversion_obstack_alloc (0);
3229 conv = implicit_conversion (type, TREE_TYPE (expr), expr,
3233 /* for a non-type template-parameter of integral or
3234 enumeration type, integral promotions (4.5) and integral
3235 conversions (4.7) are applied. */
3236 /* It should be sufficient to check the outermost conversion step, since
3237 there are no qualification conversions to integer type. */
3241 /* A conversion function is OK. If it isn't constexpr, we'll
3242 complain later that the argument isn't constant. */
3244 /* The lvalue-to-rvalue conversion is OK. */
3250 t = conv->u.next->type;
3251 if (INTEGRAL_OR_ENUMERATION_TYPE_P (t))
3254 if (complain & tf_error)
3255 error ("conversion from %qT to %qT not considered for "
3256 "non-type template argument", t, type);
3257 /* and fall through. */
3265 expr = convert_like (conv, expr, complain);
3267 expr = error_mark_node;
3269 /* Free all the conversions we allocated. */
3270 obstack_free (&conversion_obstack, p);
3275 /* Do any initial processing on the arguments to a function call. */
3277 static VEC(tree,gc) *
3278 resolve_args (VEC(tree,gc) *args)
3283 FOR_EACH_VEC_ELT (tree, args, ix, arg)
3285 if (error_operand_p (arg))
3287 else if (VOID_TYPE_P (TREE_TYPE (arg)))
3289 error ("invalid use of void expression");
3292 else if (invalid_nonstatic_memfn_p (arg, tf_warning_or_error))
3298 /* Perform overload resolution on FN, which is called with the ARGS.
3300 Return the candidate function selected by overload resolution, or
3301 NULL if the event that overload resolution failed. In the case
3302 that overload resolution fails, *CANDIDATES will be the set of
3303 candidates considered, and ANY_VIABLE_P will be set to true or
3304 false to indicate whether or not any of the candidates were
3307 The ARGS should already have gone through RESOLVE_ARGS before this
3308 function is called. */
3310 static struct z_candidate *
3311 perform_overload_resolution (tree fn,
3312 const VEC(tree,gc) *args,
3313 struct z_candidate **candidates,
3316 struct z_candidate *cand;
3317 tree explicit_targs = NULL_TREE;
3318 int template_only = 0;
3321 *any_viable_p = true;
3324 gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
3325 || TREE_CODE (fn) == TEMPLATE_DECL
3326 || TREE_CODE (fn) == OVERLOAD
3327 || TREE_CODE (fn) == TEMPLATE_ID_EXPR);
3329 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3331 explicit_targs = TREE_OPERAND (fn, 1);
3332 fn = TREE_OPERAND (fn, 0);
3336 /* Add the various candidate functions. */
3337 add_candidates (fn, NULL_TREE, args, NULL_TREE,
3338 explicit_targs, template_only,
3339 /*conversion_path=*/NULL_TREE,
3340 /*access_path=*/NULL_TREE,
3344 *candidates = splice_viable (*candidates, pedantic, any_viable_p);
3348 cand = tourney (*candidates);
3352 /* Return an expression for a call to FN (a namespace-scope function,
3353 or a static member function) with the ARGS. This may change
3357 build_new_function_call (tree fn, VEC(tree,gc) **args, bool koenig_p,
3358 tsubst_flags_t complain)
3360 struct z_candidate *candidates, *cand;
3365 if (args != NULL && *args != NULL)
3367 *args = resolve_args (*args);
3369 return error_mark_node;
3372 /* If this function was found without using argument dependent
3373 lookup, then we want to ignore any undeclared friend
3379 fn = remove_hidden_names (fn);
3382 if (complain & tf_error)
3383 error ("no matching function for call to %<%D(%A)%>",
3384 DECL_NAME (OVL_CURRENT (orig_fn)),
3385 build_tree_list_vec (*args));
3386 return error_mark_node;
3390 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3391 p = conversion_obstack_alloc (0);
3393 cand = perform_overload_resolution (fn, *args, &candidates, &any_viable_p);
3397 if (complain & tf_error)
3399 if (!any_viable_p && candidates && ! candidates->next
3400 && (TREE_CODE (candidates->fn) == FUNCTION_DECL))
3401 return cp_build_function_call_vec (candidates->fn, args, complain);
3402 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3403 fn = TREE_OPERAND (fn, 0);
3405 error ("no matching function for call to %<%D(%A)%>",
3406 DECL_NAME (OVL_CURRENT (fn)), build_tree_list_vec (*args));
3408 error ("call of overloaded %<%D(%A)%> is ambiguous",
3409 DECL_NAME (OVL_CURRENT (fn)), build_tree_list_vec (*args));
3411 print_z_candidates (candidates);
3413 result = error_mark_node;
3416 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3418 /* Free all the conversions we allocated. */
3419 obstack_free (&conversion_obstack, p);
3424 /* Build a call to a global operator new. FNNAME is the name of the
3425 operator (either "operator new" or "operator new[]") and ARGS are
3426 the arguments provided. This may change ARGS. *SIZE points to the
3427 total number of bytes required by the allocation, and is updated if
3428 that is changed here. *COOKIE_SIZE is non-NULL if a cookie should
3429 be used. If this function determines that no cookie should be
3430 used, after all, *COOKIE_SIZE is set to NULL_TREE. If FN is
3431 non-NULL, it will be set, upon return, to the allocation function
3435 build_operator_new_call (tree fnname, VEC(tree,gc) **args,
3436 tree *size, tree *cookie_size,
3440 struct z_candidate *candidates;
3441 struct z_candidate *cand;
3446 VEC_safe_insert (tree, gc, *args, 0, *size);
3447 *args = resolve_args (*args);
3449 return error_mark_node;
3455 If this lookup fails to find the name, or if the allocated type
3456 is not a class type, the allocation function's name is looked
3457 up in the global scope.
3459 we disregard block-scope declarations of "operator new". */
3460 fns = lookup_function_nonclass (fnname, *args, /*block_p=*/false);
3462 /* Figure out what function is being called. */
3463 cand = perform_overload_resolution (fns, *args, &candidates, &any_viable_p);
3465 /* If no suitable function could be found, issue an error message
3470 error ("no matching function for call to %<%D(%A)%>",
3471 DECL_NAME (OVL_CURRENT (fns)), build_tree_list_vec (*args));
3473 error ("call of overloaded %<%D(%A)%> is ambiguous",
3474 DECL_NAME (OVL_CURRENT (fns)), build_tree_list_vec (*args));
3476 print_z_candidates (candidates);
3477 return error_mark_node;
3480 /* If a cookie is required, add some extra space. Whether
3481 or not a cookie is required cannot be determined until
3482 after we know which function was called. */
3485 bool use_cookie = true;
3486 if (!abi_version_at_least (2))
3488 /* In G++ 3.2, the check was implemented incorrectly; it
3489 looked at the placement expression, rather than the
3490 type of the function. */
3491 if (VEC_length (tree, *args) == 2
3492 && same_type_p (TREE_TYPE (VEC_index (tree, *args, 1)),
3500 arg_types = TYPE_ARG_TYPES (TREE_TYPE (cand->fn));
3501 /* Skip the size_t parameter. */
3502 arg_types = TREE_CHAIN (arg_types);
3503 /* Check the remaining parameters (if any). */
3505 && TREE_CHAIN (arg_types) == void_list_node
3506 && same_type_p (TREE_VALUE (arg_types),
3510 /* If we need a cookie, adjust the number of bytes allocated. */
3513 /* Update the total size. */
3514 *size = size_binop (PLUS_EXPR, *size, *cookie_size);
3515 /* Update the argument list to reflect the adjusted size. */
3516 VEC_replace (tree, *args, 0, *size);
3519 *cookie_size = NULL_TREE;
3522 /* Tell our caller which function we decided to call. */
3526 /* Build the CALL_EXPR. */
3527 return build_over_call (cand, LOOKUP_NORMAL, tf_warning_or_error);
3530 /* Build a new call to operator(). This may change ARGS. */
3533 build_op_call (tree obj, VEC(tree,gc) **args, tsubst_flags_t complain)
3535 struct z_candidate *candidates = 0, *cand;