1 /* Functions related to invoking methods and overloaded functions.
2 Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
4 Free Software Foundation, Inc.
5 Contributed by Michael Tiemann (tiemann@cygnus.com) and
6 modified by Brendan Kehoe (brendan@cygnus.com).
8 This file is part of GCC.
10 GCC is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3, or (at your option)
15 GCC is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with GCC; see the file COPYING3. If not see
22 <http://www.gnu.org/licenses/>. */
25 /* High-level class interface. */
29 #include "coretypes.h"
38 #include "diagnostic.h"
42 #include "langhooks.h"
44 /* The various kinds of conversion. */
46 typedef enum conversion_kind {
62 /* The rank of the conversion. Order of the enumerals matters; better
63 conversions should come earlier in the list. */
65 typedef enum conversion_rank {
76 /* An implicit conversion sequence, in the sense of [over.best.ics].
77 The first conversion to be performed is at the end of the chain.
78 That conversion is always a cr_identity conversion. */
80 typedef struct conversion conversion;
82 /* The kind of conversion represented by this step. */
84 /* The rank of this conversion. */
86 BOOL_BITFIELD user_conv_p : 1;
87 BOOL_BITFIELD ellipsis_p : 1;
88 BOOL_BITFIELD this_p : 1;
89 BOOL_BITFIELD bad_p : 1;
90 /* If KIND is ck_ref_bind ck_base_conv, true to indicate that a
91 temporary should be created to hold the result of the
93 BOOL_BITFIELD need_temporary_p : 1;
94 /* If KIND is ck_ptr or ck_pmem, true to indicate that a conversion
95 from a pointer-to-derived to pointer-to-base is being performed. */
96 BOOL_BITFIELD base_p : 1;
97 /* If KIND is ck_ref_bind, true when either an lvalue reference is
98 being bound to an lvalue expression or an rvalue reference is
99 being bound to an rvalue expression. */
100 BOOL_BITFIELD rvaluedness_matches_p: 1;
101 BOOL_BITFIELD check_narrowing: 1;
102 /* The type of the expression resulting from the conversion. */
105 /* The next conversion in the chain. Since the conversions are
106 arranged from outermost to innermost, the NEXT conversion will
107 actually be performed before this conversion. This variant is
108 used only when KIND is neither ck_identity nor ck_ambig. */
110 /* The expression at the beginning of the conversion chain. This
111 variant is used only if KIND is ck_identity or ck_ambig. */
113 /* The array of conversions for an initializer_list. */
116 /* The function candidate corresponding to this conversion
117 sequence. This field is only used if KIND is ck_user. */
118 struct z_candidate *cand;
121 #define CONVERSION_RANK(NODE) \
122 ((NODE)->bad_p ? cr_bad \
123 : (NODE)->ellipsis_p ? cr_ellipsis \
124 : (NODE)->user_conv_p ? cr_user \
127 static struct obstack conversion_obstack;
128 static bool conversion_obstack_initialized;
130 static struct z_candidate * tourney (struct z_candidate *);
131 static int equal_functions (tree, tree);
132 static int joust (struct z_candidate *, struct z_candidate *, bool);
133 static int compare_ics (conversion *, conversion *);
134 static tree build_over_call (struct z_candidate *, int, tsubst_flags_t);
135 static tree build_java_interface_fn_ref (tree, tree);
136 #define convert_like(CONV, EXPR, COMPLAIN) \
137 convert_like_real ((CONV), (EXPR), NULL_TREE, 0, 0, \
138 /*issue_conversion_warnings=*/true, \
139 /*c_cast_p=*/false, (COMPLAIN))
140 #define convert_like_with_context(CONV, EXPR, FN, ARGNO, COMPLAIN ) \
141 convert_like_real ((CONV), (EXPR), (FN), (ARGNO), 0, \
142 /*issue_conversion_warnings=*/true, \
143 /*c_cast_p=*/false, (COMPLAIN))
144 static tree convert_like_real (conversion *, tree, tree, int, int, bool,
145 bool, tsubst_flags_t);
146 static void op_error (enum tree_code, enum tree_code, tree, tree,
148 static VEC(tree,gc) *resolve_args (VEC(tree,gc) *);
149 static struct z_candidate *build_user_type_conversion_1 (tree, tree, int);
150 static void print_z_candidate (const char *, struct z_candidate *);
151 static void print_z_candidates (struct z_candidate *);
152 static tree build_this (tree);
153 static struct z_candidate *splice_viable (struct z_candidate *, bool, bool *);
154 static bool any_strictly_viable (struct z_candidate *);
155 static struct z_candidate *add_template_candidate
156 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
157 tree, tree, tree, int, unification_kind_t);
158 static struct z_candidate *add_template_candidate_real
159 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
160 tree, tree, tree, int, tree, unification_kind_t);
161 static struct z_candidate *add_template_conv_candidate
162 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
164 static void add_builtin_candidates
165 (struct z_candidate **, enum tree_code, enum tree_code,
167 static void add_builtin_candidate
168 (struct z_candidate **, enum tree_code, enum tree_code,
169 tree, tree, tree, tree *, tree *, int);
170 static bool is_complete (tree);
171 static void build_builtin_candidate
172 (struct z_candidate **, tree, tree, tree, tree *, tree *,
174 static struct z_candidate *add_conv_candidate
175 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
177 static struct z_candidate *add_function_candidate
178 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
180 static conversion *implicit_conversion (tree, tree, tree, bool, int);
181 static conversion *standard_conversion (tree, tree, tree, bool, int);
182 static conversion *reference_binding (tree, tree, tree, bool, int);
183 static conversion *build_conv (conversion_kind, tree, conversion *);
184 static conversion *build_list_conv (tree, tree, int);
185 static bool is_subseq (conversion *, conversion *);
186 static conversion *maybe_handle_ref_bind (conversion **);
187 static void maybe_handle_implicit_object (conversion **);
188 static struct z_candidate *add_candidate
189 (struct z_candidate **, tree, tree, const VEC(tree,gc) *, size_t,
190 conversion **, tree, tree, int);
191 static tree source_type (conversion *);
192 static void add_warning (struct z_candidate *, struct z_candidate *);
193 static bool reference_compatible_p (tree, tree);
194 static conversion *convert_class_to_reference (tree, tree, tree, int);
195 static conversion *direct_reference_binding (tree, conversion *);
196 static bool promoted_arithmetic_type_p (tree);
197 static conversion *conditional_conversion (tree, tree);
198 static char *name_as_c_string (tree, tree, bool *);
199 static tree prep_operand (tree);
200 static void add_candidates (tree, tree, const VEC(tree,gc) *, tree, tree, bool,
201 tree, tree, int, struct z_candidate **);
202 static conversion *merge_conversion_sequences (conversion *, conversion *);
203 static bool magic_varargs_p (tree);
204 static tree build_temp (tree, tree, int, diagnostic_t *);
206 /* Returns nonzero iff the destructor name specified in NAME matches BASETYPE.
207 NAME can take many forms... */
210 check_dtor_name (tree basetype, tree name)
212 /* Just accept something we've already complained about. */
213 if (name == error_mark_node)
216 if (TREE_CODE (name) == TYPE_DECL)
217 name = TREE_TYPE (name);
218 else if (TYPE_P (name))
220 else if (TREE_CODE (name) == IDENTIFIER_NODE)
222 if ((MAYBE_CLASS_TYPE_P (basetype)
223 && name == constructor_name (basetype))
224 || (TREE_CODE (basetype) == ENUMERAL_TYPE
225 && name == TYPE_IDENTIFIER (basetype)))
228 name = get_type_value (name);
234 template <class T> struct S { ~S(); };
238 NAME will be a class template. */
239 gcc_assert (DECL_CLASS_TEMPLATE_P (name));
243 if (!name || name == error_mark_node)
245 return same_type_p (TYPE_MAIN_VARIANT (basetype), TYPE_MAIN_VARIANT (name));
248 /* We want the address of a function or method. We avoid creating a
249 pointer-to-member function. */
252 build_addr_func (tree function)
254 tree type = TREE_TYPE (function);
256 /* We have to do these by hand to avoid real pointer to member
258 if (TREE_CODE (type) == METHOD_TYPE)
260 if (TREE_CODE (function) == OFFSET_REF)
262 tree object = build_address (TREE_OPERAND (function, 0));
263 return get_member_function_from_ptrfunc (&object,
264 TREE_OPERAND (function, 1));
266 function = build_address (function);
269 function = decay_conversion (function);
274 /* Build a CALL_EXPR, we can handle FUNCTION_TYPEs, METHOD_TYPEs, or
275 POINTER_TYPE to those. Note, pointer to member function types
276 (TYPE_PTRMEMFUNC_P) must be handled by our callers. There are
277 two variants. build_call_a is the primitive taking an array of
278 arguments, while build_call_n is a wrapper that handles varargs. */
281 build_call_n (tree function, int n, ...)
284 return build_call_a (function, 0, NULL);
287 tree *argarray = (tree *) alloca (n * sizeof (tree));
292 for (i = 0; i < n; i++)
293 argarray[i] = va_arg (ap, tree);
295 return build_call_a (function, n, argarray);
300 build_call_a (tree function, int n, tree *argarray)
302 int is_constructor = 0;
309 function = build_addr_func (function);
311 gcc_assert (TYPE_PTR_P (TREE_TYPE (function)));
312 fntype = TREE_TYPE (TREE_TYPE (function));
313 gcc_assert (TREE_CODE (fntype) == FUNCTION_TYPE
314 || TREE_CODE (fntype) == METHOD_TYPE);
315 result_type = TREE_TYPE (fntype);
316 /* An rvalue has no cv-qualifiers. */
317 if (SCALAR_TYPE_P (result_type) || VOID_TYPE_P (result_type))
318 result_type = cv_unqualified (result_type);
320 if (TREE_CODE (function) == ADDR_EXPR
321 && TREE_CODE (TREE_OPERAND (function, 0)) == FUNCTION_DECL)
323 decl = TREE_OPERAND (function, 0);
324 if (!TREE_USED (decl))
326 /* We invoke build_call directly for several library
327 functions. These may have been declared normally if
328 we're building libgcc, so we can't just check
330 gcc_assert (DECL_ARTIFICIAL (decl)
331 || !strncmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
339 /* We check both the decl and the type; a function may be known not to
340 throw without being declared throw(). */
341 nothrow = ((decl && TREE_NOTHROW (decl))
342 || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
344 if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain)
345 current_function_returns_abnormally = 1;
347 if (decl && TREE_DEPRECATED (decl))
348 warn_deprecated_use (decl, NULL_TREE);
349 require_complete_eh_spec_types (fntype, decl);
351 if (decl && DECL_CONSTRUCTOR_P (decl))
354 /* Don't pass empty class objects by value. This is useful
355 for tags in STL, which are used to control overload resolution.
356 We don't need to handle other cases of copying empty classes. */
357 if (! decl || ! DECL_BUILT_IN (decl))
358 for (i = 0; i < n; i++)
359 if (is_empty_class (TREE_TYPE (argarray[i]))
360 && ! TREE_ADDRESSABLE (TREE_TYPE (argarray[i])))
362 tree t = build0 (EMPTY_CLASS_EXPR, TREE_TYPE (argarray[i]));
363 argarray[i] = build2 (COMPOUND_EXPR, TREE_TYPE (t),
367 function = build_call_array_loc (input_location,
368 result_type, function, n, argarray);
369 TREE_HAS_CONSTRUCTOR (function) = is_constructor;
370 TREE_NOTHROW (function) = nothrow;
375 /* Build something of the form ptr->method (args)
376 or object.method (args). This can also build
377 calls to constructors, and find friends.
379 Member functions always take their class variable
382 INSTANCE is a class instance.
384 NAME is the name of the method desired, usually an IDENTIFIER_NODE.
386 PARMS help to figure out what that NAME really refers to.
388 BASETYPE_PATH, if non-NULL, contains a chain from the type of INSTANCE
389 down to the real instance type to use for access checking. We need this
390 information to get protected accesses correct.
392 FLAGS is the logical disjunction of zero or more LOOKUP_
393 flags. See cp-tree.h for more info.
395 If this is all OK, calls build_function_call with the resolved
398 This function must also handle being called to perform
399 initialization, promotion/coercion of arguments, and
400 instantiation of default parameters.
402 Note that NAME may refer to an instance variable name. If
403 `operator()()' is defined for the type of that field, then we return
406 /* New overloading code. */
408 typedef struct z_candidate z_candidate;
410 typedef struct candidate_warning candidate_warning;
411 struct candidate_warning {
413 candidate_warning *next;
417 /* The FUNCTION_DECL that will be called if this candidate is
418 selected by overload resolution. */
420 /* If not NULL_TREE, the first argument to use when calling this
423 /* The rest of the arguments to use when calling this function. If
424 there are no further arguments this may be NULL or it may be an
426 const VEC(tree,gc) *args;
427 /* The implicit conversion sequences for each of the arguments to
430 /* The number of implicit conversion sequences. */
432 /* If FN is a user-defined conversion, the standard conversion
433 sequence from the type returned by FN to the desired destination
435 conversion *second_conv;
437 /* If FN is a member function, the binfo indicating the path used to
438 qualify the name of FN at the call site. This path is used to
439 determine whether or not FN is accessible if it is selected by
440 overload resolution. The DECL_CONTEXT of FN will always be a
441 (possibly improper) base of this binfo. */
443 /* If FN is a non-static member function, the binfo indicating the
444 subobject to which the `this' pointer should be converted if FN
445 is selected by overload resolution. The type pointed to the by
446 the `this' pointer must correspond to the most derived class
447 indicated by the CONVERSION_PATH. */
448 tree conversion_path;
450 candidate_warning *warnings;
454 /* Returns true iff T is a null pointer constant in the sense of
458 null_ptr_cst_p (tree t)
462 A null pointer constant is an integral constant expression
463 (_expr.const_) rvalue of integer type that evaluates to zero or
464 an rvalue of type std::nullptr_t. */
465 t = integral_constant_value (t);
467 || NULLPTR_TYPE_P (TREE_TYPE (t)))
469 if (CP_INTEGRAL_TYPE_P (TREE_TYPE (t)) && integer_zerop (t))
472 if (!TREE_OVERFLOW (t))
478 /* Returns nonzero if PARMLIST consists of only default parms and/or
482 sufficient_parms_p (const_tree parmlist)
484 for (; parmlist && parmlist != void_list_node;
485 parmlist = TREE_CHAIN (parmlist))
486 if (!TREE_PURPOSE (parmlist))
491 /* Allocate N bytes of memory from the conversion obstack. The memory
492 is zeroed before being returned. */
495 conversion_obstack_alloc (size_t n)
498 if (!conversion_obstack_initialized)
500 gcc_obstack_init (&conversion_obstack);
501 conversion_obstack_initialized = true;
503 p = obstack_alloc (&conversion_obstack, n);
508 /* Dynamically allocate a conversion. */
511 alloc_conversion (conversion_kind kind)
514 c = (conversion *) conversion_obstack_alloc (sizeof (conversion));
519 #ifdef ENABLE_CHECKING
521 /* Make sure that all memory on the conversion obstack has been
525 validate_conversion_obstack (void)
527 if (conversion_obstack_initialized)
528 gcc_assert ((obstack_next_free (&conversion_obstack)
529 == obstack_base (&conversion_obstack)));
532 #endif /* ENABLE_CHECKING */
534 /* Dynamically allocate an array of N conversions. */
537 alloc_conversions (size_t n)
539 return (conversion **) conversion_obstack_alloc (n * sizeof (conversion *));
543 build_conv (conversion_kind code, tree type, conversion *from)
546 conversion_rank rank = CONVERSION_RANK (from);
548 /* Note that the caller is responsible for filling in t->cand for
549 user-defined conversions. */
550 t = alloc_conversion (code);
573 t->user_conv_p = (code == ck_user || from->user_conv_p);
574 t->bad_p = from->bad_p;
579 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, a
580 specialization of std::initializer_list<T>, if such a conversion is
584 build_list_conv (tree type, tree ctor, int flags)
586 tree elttype = TREE_VEC_ELT (CLASSTYPE_TI_ARGS (type), 0);
587 unsigned len = CONSTRUCTOR_NELTS (ctor);
588 conversion **subconvs = alloc_conversions (len);
593 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
596 = implicit_conversion (elttype, TREE_TYPE (val), val,
604 t = alloc_conversion (ck_list);
606 t->u.list = subconvs;
609 for (i = 0; i < len; ++i)
611 conversion *sub = subconvs[i];
612 if (sub->rank > t->rank)
614 if (sub->user_conv_p)
615 t->user_conv_p = true;
623 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, an
624 aggregate class, if such a conversion is possible. */
627 build_aggr_conv (tree type, tree ctor, int flags)
629 unsigned HOST_WIDE_INT i = 0;
631 tree field = next_initializable_field (TYPE_FIELDS (type));
633 for (; field; field = next_initializable_field (TREE_CHAIN (field)))
635 if (i < CONSTRUCTOR_NELTS (ctor))
637 constructor_elt *ce = CONSTRUCTOR_ELT (ctor, i);
638 if (!can_convert_arg (TREE_TYPE (field), TREE_TYPE (ce->value),
642 if (TREE_CODE (type) == UNION_TYPE)
645 else if (build_value_init (TREE_TYPE (field)) == error_mark_node)
649 if (i < CONSTRUCTOR_NELTS (ctor))
652 c = alloc_conversion (ck_aggr);
655 c->user_conv_p = true;
660 /* Build a representation of the identity conversion from EXPR to
661 itself. The TYPE should match the type of EXPR, if EXPR is non-NULL. */
664 build_identity_conv (tree type, tree expr)
668 c = alloc_conversion (ck_identity);
675 /* Converting from EXPR to TYPE was ambiguous in the sense that there
676 were multiple user-defined conversions to accomplish the job.
677 Build a conversion that indicates that ambiguity. */
680 build_ambiguous_conv (tree type, tree expr)
684 c = alloc_conversion (ck_ambig);
692 strip_top_quals (tree t)
694 if (TREE_CODE (t) == ARRAY_TYPE)
696 return cp_build_qualified_type (t, 0);
699 /* Returns the standard conversion path (see [conv]) from type FROM to type
700 TO, if any. For proper handling of null pointer constants, you must
701 also pass the expression EXPR to convert from. If C_CAST_P is true,
702 this conversion is coming from a C-style cast. */
705 standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
708 enum tree_code fcode, tcode;
710 bool fromref = false;
712 to = non_reference (to);
713 if (TREE_CODE (from) == REFERENCE_TYPE)
716 from = TREE_TYPE (from);
718 to = strip_top_quals (to);
719 from = strip_top_quals (from);
721 if ((TYPE_PTRFN_P (to) || TYPE_PTRMEMFUNC_P (to))
722 && expr && type_unknown_p (expr))
724 tsubst_flags_t tflags = tf_conv;
725 if (!(flags & LOOKUP_PROTECT))
726 tflags |= tf_no_access_control;
727 expr = instantiate_type (to, expr, tflags);
728 if (expr == error_mark_node)
730 from = TREE_TYPE (expr);
733 fcode = TREE_CODE (from);
734 tcode = TREE_CODE (to);
736 conv = build_identity_conv (from, expr);
737 if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
739 from = type_decays_to (from);
740 fcode = TREE_CODE (from);
741 conv = build_conv (ck_lvalue, from, conv);
743 else if (fromref || (expr && lvalue_p (expr)))
748 bitfield_type = is_bitfield_expr_with_lowered_type (expr);
751 from = strip_top_quals (bitfield_type);
752 fcode = TREE_CODE (from);
755 conv = build_conv (ck_rvalue, from, conv);
758 /* Allow conversion between `__complex__' data types. */
759 if (tcode == COMPLEX_TYPE && fcode == COMPLEX_TYPE)
761 /* The standard conversion sequence to convert FROM to TO is
762 the standard conversion sequence to perform componentwise
764 conversion *part_conv = standard_conversion
765 (TREE_TYPE (to), TREE_TYPE (from), NULL_TREE, c_cast_p, flags);
769 conv = build_conv (part_conv->kind, to, conv);
770 conv->rank = part_conv->rank;
778 if (same_type_p (from, to))
782 A null pointer constant can be converted to a pointer type; ... A
783 null pointer constant of integral type can be converted to an
784 rvalue of type std::nullptr_t. */
785 if ((tcode == POINTER_TYPE || TYPE_PTR_TO_MEMBER_P (to)
786 || NULLPTR_TYPE_P (to))
787 && expr && null_ptr_cst_p (expr))
788 conv = build_conv (ck_std, to, conv);
789 else if ((tcode == INTEGER_TYPE && fcode == POINTER_TYPE)
790 || (tcode == POINTER_TYPE && fcode == INTEGER_TYPE))
792 /* For backwards brain damage compatibility, allow interconversion of
793 pointers and integers with a pedwarn. */
794 conv = build_conv (ck_std, to, conv);
797 else if (UNSCOPED_ENUM_P (to) && fcode == INTEGER_TYPE)
799 /* For backwards brain damage compatibility, allow interconversion of
800 enums and integers with a pedwarn. */
801 conv = build_conv (ck_std, to, conv);
804 else if ((tcode == POINTER_TYPE && fcode == POINTER_TYPE)
805 || (TYPE_PTRMEM_P (to) && TYPE_PTRMEM_P (from)))
810 if (tcode == POINTER_TYPE
811 && same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (from),
814 else if (VOID_TYPE_P (TREE_TYPE (to))
815 && !TYPE_PTRMEM_P (from)
816 && TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE)
818 from = build_pointer_type
819 (cp_build_qualified_type (void_type_node,
820 cp_type_quals (TREE_TYPE (from))));
821 conv = build_conv (ck_ptr, from, conv);
823 else if (TYPE_PTRMEM_P (from))
825 tree fbase = TYPE_PTRMEM_CLASS_TYPE (from);
826 tree tbase = TYPE_PTRMEM_CLASS_TYPE (to);
828 if (DERIVED_FROM_P (fbase, tbase)
829 && (same_type_ignoring_top_level_qualifiers_p
830 (TYPE_PTRMEM_POINTED_TO_TYPE (from),
831 TYPE_PTRMEM_POINTED_TO_TYPE (to))))
833 from = build_ptrmem_type (tbase,
834 TYPE_PTRMEM_POINTED_TO_TYPE (from));
835 conv = build_conv (ck_pmem, from, conv);
837 else if (!same_type_p (fbase, tbase))
840 else if (CLASS_TYPE_P (TREE_TYPE (from))
841 && CLASS_TYPE_P (TREE_TYPE (to))
844 An rvalue of type "pointer to cv D," where D is a
845 class type, can be converted to an rvalue of type
846 "pointer to cv B," where B is a base class (clause
847 _class.derived_) of D. If B is an inaccessible
848 (clause _class.access_) or ambiguous
849 (_class.member.lookup_) base class of D, a program
850 that necessitates this conversion is ill-formed.
851 Therefore, we use DERIVED_FROM_P, and do not check
852 access or uniqueness. */
853 && DERIVED_FROM_P (TREE_TYPE (to), TREE_TYPE (from)))
856 cp_build_qualified_type (TREE_TYPE (to),
857 cp_type_quals (TREE_TYPE (from)));
858 from = build_pointer_type (from);
859 conv = build_conv (ck_ptr, from, conv);
863 if (tcode == POINTER_TYPE)
865 to_pointee = TREE_TYPE (to);
866 from_pointee = TREE_TYPE (from);
870 to_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (to);
871 from_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (from);
874 if (same_type_p (from, to))
876 else if (c_cast_p && comp_ptr_ttypes_const (to, from))
877 /* In a C-style cast, we ignore CV-qualification because we
878 are allowed to perform a static_cast followed by a
880 conv = build_conv (ck_qual, to, conv);
881 else if (!c_cast_p && comp_ptr_ttypes (to_pointee, from_pointee))
882 conv = build_conv (ck_qual, to, conv);
883 else if (expr && string_conv_p (to, expr, 0))
884 /* converting from string constant to char *. */
885 conv = build_conv (ck_qual, to, conv);
886 else if (ptr_reasonably_similar (to_pointee, from_pointee))
888 conv = build_conv (ck_ptr, to, conv);
896 else if (TYPE_PTRMEMFUNC_P (to) && TYPE_PTRMEMFUNC_P (from))
898 tree fromfn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (from));
899 tree tofn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (to));
900 tree fbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fromfn)));
901 tree tbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (tofn)));
903 if (!DERIVED_FROM_P (fbase, tbase)
904 || !same_type_p (TREE_TYPE (fromfn), TREE_TYPE (tofn))
905 || !compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)),
906 TREE_CHAIN (TYPE_ARG_TYPES (tofn)))
907 || cp_type_quals (fbase) != cp_type_quals (tbase))
910 from = build_memfn_type (fromfn, tbase, cp_type_quals (tbase));
911 from = build_ptrmemfunc_type (build_pointer_type (from));
912 conv = build_conv (ck_pmem, from, conv);
915 else if (tcode == BOOLEAN_TYPE)
919 An rvalue of arithmetic, unscoped enumeration, pointer, or
920 pointer to member type can be converted to an rvalue of type
921 bool. ... An rvalue of type std::nullptr_t can be converted
922 to an rvalue of type bool; */
923 if (ARITHMETIC_TYPE_P (from)
924 || UNSCOPED_ENUM_P (from)
925 || fcode == POINTER_TYPE
926 || TYPE_PTR_TO_MEMBER_P (from)
927 || NULLPTR_TYPE_P (from))
929 conv = build_conv (ck_std, to, conv);
930 if (fcode == POINTER_TYPE
931 || TYPE_PTRMEM_P (from)
932 || (TYPE_PTRMEMFUNC_P (from)
933 && conv->rank < cr_pbool)
934 || NULLPTR_TYPE_P (from))
935 conv->rank = cr_pbool;
941 /* We don't check for ENUMERAL_TYPE here because there are no standard
942 conversions to enum type. */
943 /* As an extension, allow conversion to complex type. */
944 else if (ARITHMETIC_TYPE_P (to))
946 if (! (INTEGRAL_CODE_P (fcode) || fcode == REAL_TYPE)
947 || SCOPED_ENUM_P (from))
949 conv = build_conv (ck_std, to, conv);
951 /* Give this a better rank if it's a promotion. */
952 if (same_type_p (to, type_promotes_to (from))
953 && conv->u.next->rank <= cr_promotion)
954 conv->rank = cr_promotion;
956 else if (fcode == VECTOR_TYPE && tcode == VECTOR_TYPE
957 && vector_types_convertible_p (from, to, false))
958 return build_conv (ck_std, to, conv);
959 else if (MAYBE_CLASS_TYPE_P (to) && MAYBE_CLASS_TYPE_P (from)
960 && is_properly_derived_from (from, to))
962 if (conv->kind == ck_rvalue)
964 conv = build_conv (ck_base, to, conv);
965 /* The derived-to-base conversion indicates the initialization
966 of a parameter with base type from an object of a derived
967 type. A temporary object is created to hold the result of
968 the conversion unless we're binding directly to a reference. */
969 conv->need_temporary_p = !(flags & LOOKUP_NO_TEMP_BIND);
974 if (flags & LOOKUP_NO_NARROWING)
975 conv->check_narrowing = true;
980 /* Returns nonzero if T1 is reference-related to T2. */
983 reference_related_p (tree t1, tree t2)
985 t1 = TYPE_MAIN_VARIANT (t1);
986 t2 = TYPE_MAIN_VARIANT (t2);
990 Given types "cv1 T1" and "cv2 T2," "cv1 T1" is reference-related
991 to "cv2 T2" if T1 is the same type as T2, or T1 is a base class
993 return (same_type_p (t1, t2)
994 || (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
995 && DERIVED_FROM_P (t1, t2)));
998 /* Returns nonzero if T1 is reference-compatible with T2. */
1001 reference_compatible_p (tree t1, tree t2)
1005 "cv1 T1" is reference compatible with "cv2 T2" if T1 is
1006 reference-related to T2 and cv1 is the same cv-qualification as,
1007 or greater cv-qualification than, cv2. */
1008 return (reference_related_p (t1, t2)
1009 && at_least_as_qualified_p (t1, t2));
1012 /* Determine whether or not the EXPR (of class type S) can be
1013 converted to T as in [over.match.ref]. */
1016 convert_class_to_reference (tree reference_type, tree s, tree expr, int flags)
1022 struct z_candidate *candidates;
1023 struct z_candidate *cand;
1026 conversions = lookup_conversions (s, /*lookup_template_convs_p=*/true);
1032 Assuming that "cv1 T" is the underlying type of the reference
1033 being initialized, and "cv S" is the type of the initializer
1034 expression, with S a class type, the candidate functions are
1035 selected as follows:
1037 --The conversion functions of S and its base classes are
1038 considered. Those that are not hidden within S and yield type
1039 "reference to cv2 T2", where "cv1 T" is reference-compatible
1040 (_dcl.init.ref_) with "cv2 T2", are candidate functions.
1042 The argument list has one argument, which is the initializer
1047 /* Conceptually, we should take the address of EXPR and put it in
1048 the argument list. Unfortunately, however, that can result in
1049 error messages, which we should not issue now because we are just
1050 trying to find a conversion operator. Therefore, we use NULL,
1051 cast to the appropriate type. */
1052 first_arg = build_int_cst (build_pointer_type (s), 0);
1054 t = TREE_TYPE (reference_type);
1056 /* We're performing a user-defined conversion to a desired type, so set
1057 this for the benefit of add_candidates. */
1058 flags |= LOOKUP_NO_CONVERSION;
1060 for (; conversions; conversions = TREE_CHAIN (conversions))
1062 tree fns = TREE_VALUE (conversions);
1063 tree binfo = TREE_PURPOSE (conversions);
1064 struct z_candidate *old_candidates = candidates;;
1066 add_candidates (fns, first_arg, NULL, reference_type,
1068 binfo, TYPE_BINFO (s),
1069 flags, &candidates);
1071 for (cand = candidates; cand != old_candidates; cand = cand->next)
1073 /* Now, see if the conversion function really returns
1074 an lvalue of the appropriate type. From the
1075 point of view of unification, simply returning an
1076 rvalue of the right type is good enough. */
1078 tree t2 = TREE_TYPE (TREE_TYPE (f));
1079 if (TREE_CODE (t2) != REFERENCE_TYPE
1080 || !reference_compatible_p (t, TREE_TYPE (t2)))
1086 conversion *identity_conv;
1087 /* Build a standard conversion sequence indicating the
1088 binding from the reference type returned by the
1089 function to the desired REFERENCE_TYPE. */
1091 = build_identity_conv (TREE_TYPE (TREE_TYPE
1092 (TREE_TYPE (cand->fn))),
1095 = (direct_reference_binding
1096 (reference_type, identity_conv));
1097 cand->second_conv->rvaluedness_matches_p
1098 = TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn)))
1099 == TYPE_REF_IS_RVALUE (reference_type);
1100 cand->second_conv->bad_p |= cand->convs[0]->bad_p;
1102 /* Don't allow binding of lvalues to rvalue references. */
1103 if (TYPE_REF_IS_RVALUE (reference_type)
1104 && !TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn))))
1105 cand->second_conv->bad_p = true;
1110 candidates = splice_viable (candidates, pedantic, &any_viable_p);
1111 /* If none of the conversion functions worked out, let our caller
1116 cand = tourney (candidates);
1120 /* Now that we know that this is the function we're going to use fix
1121 the dummy first argument. */
1122 gcc_assert (cand->first_arg == NULL_TREE
1123 || integer_zerop (cand->first_arg));
1124 cand->first_arg = build_this (expr);
1126 /* Build a user-defined conversion sequence representing the
1128 conv = build_conv (ck_user,
1129 TREE_TYPE (TREE_TYPE (cand->fn)),
1130 build_identity_conv (TREE_TYPE (expr), expr));
1133 if (cand->viable == -1)
1136 /* Merge it with the standard conversion sequence from the
1137 conversion function's return type to the desired type. */
1138 cand->second_conv = merge_conversion_sequences (conv, cand->second_conv);
1140 return cand->second_conv;
1143 /* A reference of the indicated TYPE is being bound directly to the
1144 expression represented by the implicit conversion sequence CONV.
1145 Return a conversion sequence for this binding. */
1148 direct_reference_binding (tree type, conversion *conv)
1152 gcc_assert (TREE_CODE (type) == REFERENCE_TYPE);
1153 gcc_assert (TREE_CODE (conv->type) != REFERENCE_TYPE);
1155 t = TREE_TYPE (type);
1159 When a parameter of reference type binds directly
1160 (_dcl.init.ref_) to an argument expression, the implicit
1161 conversion sequence is the identity conversion, unless the
1162 argument expression has a type that is a derived class of the
1163 parameter type, in which case the implicit conversion sequence is
1164 a derived-to-base Conversion.
1166 If the parameter binds directly to the result of applying a
1167 conversion function to the argument expression, the implicit
1168 conversion sequence is a user-defined conversion sequence
1169 (_over.ics.user_), with the second standard conversion sequence
1170 either an identity conversion or, if the conversion function
1171 returns an entity of a type that is a derived class of the
1172 parameter type, a derived-to-base conversion. */
1173 if (!same_type_ignoring_top_level_qualifiers_p (t, conv->type))
1175 /* Represent the derived-to-base conversion. */
1176 conv = build_conv (ck_base, t, conv);
1177 /* We will actually be binding to the base-class subobject in
1178 the derived class, so we mark this conversion appropriately.
1179 That way, convert_like knows not to generate a temporary. */
1180 conv->need_temporary_p = false;
1182 return build_conv (ck_ref_bind, type, conv);
1185 /* Returns the conversion path from type FROM to reference type TO for
1186 purposes of reference binding. For lvalue binding, either pass a
1187 reference type to FROM or an lvalue expression to EXPR. If the
1188 reference will be bound to a temporary, NEED_TEMPORARY_P is set for
1189 the conversion returned. If C_CAST_P is true, this
1190 conversion is coming from a C-style cast. */
1193 reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
1195 conversion *conv = NULL;
1196 tree to = TREE_TYPE (rto);
1201 cp_lvalue_kind is_lvalue = clk_none;
1203 if (TREE_CODE (to) == FUNCTION_TYPE && expr && type_unknown_p (expr))
1205 expr = instantiate_type (to, expr, tf_none);
1206 if (expr == error_mark_node)
1208 from = TREE_TYPE (expr);
1211 if (TREE_CODE (from) == REFERENCE_TYPE)
1213 /* Anything with reference type is an lvalue. */
1214 is_lvalue = clk_ordinary;
1215 from = TREE_TYPE (from);
1218 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1220 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
1221 conv = implicit_conversion (to, from, expr, c_cast_p,
1223 if (!CLASS_TYPE_P (to)
1224 && CONSTRUCTOR_NELTS (expr) == 1)
1226 expr = CONSTRUCTOR_ELT (expr, 0)->value;
1227 if (error_operand_p (expr))
1229 from = TREE_TYPE (expr);
1233 if (is_lvalue == clk_none && expr)
1234 is_lvalue = real_lvalue_p (expr);
1237 if ((is_lvalue & clk_bitfield) != 0)
1238 tfrom = unlowered_expr_type (expr);
1240 /* Figure out whether or not the types are reference-related and
1241 reference compatible. We have do do this after stripping
1242 references from FROM. */
1243 related_p = reference_related_p (to, tfrom);
1244 /* If this is a C cast, first convert to an appropriately qualified
1245 type, so that we can later do a const_cast to the desired type. */
1246 if (related_p && c_cast_p
1247 && !at_least_as_qualified_p (to, tfrom))
1248 to = build_qualified_type (to, cp_type_quals (tfrom));
1249 compatible_p = reference_compatible_p (to, tfrom);
1251 /* Directly bind reference when target expression's type is compatible with
1252 the reference and expression is an lvalue. In DR391, the wording in
1253 [8.5.3/5 dcl.init.ref] is changed to also require direct bindings for
1254 const and rvalue references to rvalues of compatible class type.
1255 We should also do direct bindings for non-class "rvalues" derived from
1256 rvalue references. */
1259 || (((CP_TYPE_CONST_NON_VOLATILE_P (to)
1260 && !(flags & LOOKUP_NO_TEMP_BIND))
1261 || TYPE_REF_IS_RVALUE (rto))
1262 && (CLASS_TYPE_P (from) || (expr && lvalue_p (expr))))))
1266 If the initializer expression
1268 -- is an lvalue (but not an lvalue for a bit-field), and "cv1 T1"
1269 is reference-compatible with "cv2 T2,"
1271 the reference is bound directly to the initializer expression
1275 If the initializer expression is an rvalue, with T2 a class type,
1276 and "cv1 T1" is reference-compatible with "cv2 T2", the reference
1277 is bound to the object represented by the rvalue or to a sub-object
1278 within that object. */
1280 conv = build_identity_conv (tfrom, expr);
1281 conv = direct_reference_binding (rto, conv);
1283 if (flags & LOOKUP_PREFER_RVALUE)
1284 /* The top-level caller requested that we pretend that the lvalue
1285 be treated as an rvalue. */
1286 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1288 conv->rvaluedness_matches_p
1289 = (TYPE_REF_IS_RVALUE (rto) == !is_lvalue);
1291 if ((is_lvalue & clk_bitfield) != 0
1292 || ((is_lvalue & clk_packed) != 0 && !TYPE_PACKED (to)))
1293 /* For the purposes of overload resolution, we ignore the fact
1294 this expression is a bitfield or packed field. (In particular,
1295 [over.ics.ref] says specifically that a function with a
1296 non-const reference parameter is viable even if the
1297 argument is a bitfield.)
1299 However, when we actually call the function we must create
1300 a temporary to which to bind the reference. If the
1301 reference is volatile, or isn't const, then we cannot make
1302 a temporary, so we just issue an error when the conversion
1304 conv->need_temporary_p = true;
1306 /* Don't allow binding of lvalues to rvalue references. */
1307 if (is_lvalue && TYPE_REF_IS_RVALUE (rto)
1308 && !(flags & LOOKUP_PREFER_RVALUE))
1313 /* [class.conv.fct] A conversion function is never used to convert a
1314 (possibly cv-qualified) object to the (possibly cv-qualified) same
1315 object type (or a reference to it), to a (possibly cv-qualified) base
1316 class of that type (or a reference to it).... */
1317 else if (CLASS_TYPE_P (from) && !related_p
1318 && !(flags & LOOKUP_NO_CONVERSION))
1322 If the initializer expression
1324 -- has a class type (i.e., T2 is a class type) can be
1325 implicitly converted to an lvalue of type "cv3 T3," where
1326 "cv1 T1" is reference-compatible with "cv3 T3". (this
1327 conversion is selected by enumerating the applicable
1328 conversion functions (_over.match.ref_) and choosing the
1329 best one through overload resolution. (_over.match_).
1331 the reference is bound to the lvalue result of the conversion
1332 in the second case. */
1333 conv = convert_class_to_reference (rto, from, expr, flags);
1338 /* From this point on, we conceptually need temporaries, even if we
1339 elide them. Only the cases above are "direct bindings". */
1340 if (flags & LOOKUP_NO_TEMP_BIND)
1345 When a parameter of reference type is not bound directly to an
1346 argument expression, the conversion sequence is the one required
1347 to convert the argument expression to the underlying type of the
1348 reference according to _over.best.ics_. Conceptually, this
1349 conversion sequence corresponds to copy-initializing a temporary
1350 of the underlying type with the argument expression. Any
1351 difference in top-level cv-qualification is subsumed by the
1352 initialization itself and does not constitute a conversion. */
1356 Otherwise, the reference shall be to a non-volatile const type.
1358 Under C++0x, [8.5.3/5 dcl.init.ref] it may also be an rvalue reference */
1359 if (!CP_TYPE_CONST_NON_VOLATILE_P (to) && !TYPE_REF_IS_RVALUE (rto))
1364 Otherwise, a temporary of type "cv1 T1" is created and
1365 initialized from the initializer expression using the rules for a
1366 non-reference copy initialization. If T1 is reference-related to
1367 T2, cv1 must be the same cv-qualification as, or greater
1368 cv-qualification than, cv2; otherwise, the program is ill-formed. */
1369 if (related_p && !at_least_as_qualified_p (to, from))
1372 /* We're generating a temporary now, but don't bind any more in the
1373 conversion (specifically, don't slice the temporary returned by a
1374 conversion operator). */
1375 flags |= LOOKUP_NO_TEMP_BIND;
1377 /* Temporaries are copy-initialized, except for this hack to allow
1378 explicit conversion ops to the copy ctor. See also
1379 add_function_candidate. */
1380 if (!(flags & LOOKUP_COPY_PARM))
1381 flags |= LOOKUP_ONLYCONVERTING;
1384 conv = implicit_conversion (to, from, expr, c_cast_p,
1389 conv = build_conv (ck_ref_bind, rto, conv);
1390 /* This reference binding, unlike those above, requires the
1391 creation of a temporary. */
1392 conv->need_temporary_p = true;
1393 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1398 /* Returns the implicit conversion sequence (see [over.ics]) from type
1399 FROM to type TO. The optional expression EXPR may affect the
1400 conversion. FLAGS are the usual overloading flags. If C_CAST_P is
1401 true, this conversion is coming from a C-style cast. */
1404 implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
1409 if (from == error_mark_node || to == error_mark_node
1410 || expr == error_mark_node)
1413 if (TREE_CODE (to) == REFERENCE_TYPE)
1414 conv = reference_binding (to, from, expr, c_cast_p, flags);
1416 conv = standard_conversion (to, from, expr, c_cast_p, flags);
1421 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1423 if (is_std_init_list (to))
1424 return build_list_conv (to, expr, flags);
1426 /* Allow conversion from an initializer-list with one element to a
1428 if (SCALAR_TYPE_P (to))
1430 int nelts = CONSTRUCTOR_NELTS (expr);
1434 elt = integer_zero_node;
1435 else if (nelts == 1)
1436 elt = CONSTRUCTOR_ELT (expr, 0)->value;
1438 elt = error_mark_node;
1440 conv = implicit_conversion (to, TREE_TYPE (elt), elt,
1444 conv->check_narrowing = true;
1445 if (BRACE_ENCLOSED_INITIALIZER_P (elt))
1446 /* Too many levels of braces, i.e. '{{1}}'. */
1453 if (expr != NULL_TREE
1454 && (MAYBE_CLASS_TYPE_P (from)
1455 || MAYBE_CLASS_TYPE_P (to))
1456 && (flags & LOOKUP_NO_CONVERSION) == 0)
1458 struct z_candidate *cand;
1459 int convflags = (flags & (LOOKUP_NO_TEMP_BIND|LOOKUP_ONLYCONVERTING));
1461 if (CLASS_TYPE_P (to)
1462 && !CLASSTYPE_NON_AGGREGATE (complete_type (to))
1463 && BRACE_ENCLOSED_INITIALIZER_P (expr))
1464 return build_aggr_conv (to, expr, flags);
1466 cand = build_user_type_conversion_1 (to, expr, convflags);
1468 conv = cand->second_conv;
1470 /* We used to try to bind a reference to a temporary here, but that
1471 is now handled after the recursive call to this function at the end
1472 of reference_binding. */
1479 /* Add a new entry to the list of candidates. Used by the add_*_candidate
1480 functions. ARGS will not be changed until a single candidate is
1483 static struct z_candidate *
1484 add_candidate (struct z_candidate **candidates,
1485 tree fn, tree first_arg, const VEC(tree,gc) *args,
1486 size_t num_convs, conversion **convs,
1487 tree access_path, tree conversion_path,
1490 struct z_candidate *cand = (struct z_candidate *)
1491 conversion_obstack_alloc (sizeof (struct z_candidate));
1494 cand->first_arg = first_arg;
1496 cand->convs = convs;
1497 cand->num_convs = num_convs;
1498 cand->access_path = access_path;
1499 cand->conversion_path = conversion_path;
1500 cand->viable = viable;
1501 cand->next = *candidates;
1507 /* Create an overload candidate for the function or method FN called
1508 with the argument list FIRST_ARG/ARGS and add it to CANDIDATES.
1509 FLAGS is passed on to implicit_conversion.
1511 This does not change ARGS.
1513 CTYPE, if non-NULL, is the type we want to pretend this function
1514 comes from for purposes of overload resolution. */
1516 static struct z_candidate *
1517 add_function_candidate (struct z_candidate **candidates,
1518 tree fn, tree ctype, tree first_arg,
1519 const VEC(tree,gc) *args, tree access_path,
1520 tree conversion_path, int flags)
1522 tree parmlist = TYPE_ARG_TYPES (TREE_TYPE (fn));
1526 tree orig_first_arg = first_arg;
1530 /* At this point we should not see any functions which haven't been
1531 explicitly declared, except for friend functions which will have
1532 been found using argument dependent lookup. */
1533 gcc_assert (!DECL_ANTICIPATED (fn) || DECL_HIDDEN_FRIEND_P (fn));
1535 /* The `this', `in_chrg' and VTT arguments to constructors are not
1536 considered in overload resolution. */
1537 if (DECL_CONSTRUCTOR_P (fn))
1539 parmlist = skip_artificial_parms_for (fn, parmlist);
1540 skip = num_artificial_parms_for (fn);
1541 if (skip > 0 && first_arg != NULL_TREE)
1544 first_arg = NULL_TREE;
1550 len = VEC_length (tree, args) - skip + (first_arg != NULL_TREE ? 1 : 0);
1551 convs = alloc_conversions (len);
1553 /* 13.3.2 - Viable functions [over.match.viable]
1554 First, to be a viable function, a candidate function shall have enough
1555 parameters to agree in number with the arguments in the list.
1557 We need to check this first; otherwise, checking the ICSes might cause
1558 us to produce an ill-formed template instantiation. */
1560 parmnode = parmlist;
1561 for (i = 0; i < len; ++i)
1563 if (parmnode == NULL_TREE || parmnode == void_list_node)
1565 parmnode = TREE_CHAIN (parmnode);
1568 if (i < len && parmnode)
1571 /* Make sure there are default args for the rest of the parms. */
1572 else if (!sufficient_parms_p (parmnode))
1578 /* Second, for F to be a viable function, there shall exist for each
1579 argument an implicit conversion sequence that converts that argument
1580 to the corresponding parameter of F. */
1582 parmnode = parmlist;
1584 for (i = 0; i < len; ++i)
1590 if (parmnode == void_list_node)
1593 if (i == 0 && first_arg != NULL_TREE)
1596 arg = VEC_index (tree, args,
1597 i + skip - (first_arg != NULL_TREE ? 1 : 0));
1598 argtype = lvalue_type (arg);
1600 is_this = (i == 0 && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
1601 && ! DECL_CONSTRUCTOR_P (fn));
1605 tree parmtype = TREE_VALUE (parmnode);
1608 /* The type of the implicit object parameter ('this') for
1609 overload resolution is not always the same as for the
1610 function itself; conversion functions are considered to
1611 be members of the class being converted, and functions
1612 introduced by a using-declaration are considered to be
1613 members of the class that uses them.
1615 Since build_over_call ignores the ICS for the `this'
1616 parameter, we can just change the parm type. */
1617 if (ctype && is_this)
1620 = build_qualified_type (ctype,
1621 TYPE_QUALS (TREE_TYPE (parmtype)));
1622 parmtype = build_pointer_type (parmtype);
1625 if (ctype && i == 0 && DECL_COPY_CONSTRUCTOR_P (fn)
1628 /* Hack: Direct-initialize copy parm (i.e. suppress
1629 LOOKUP_ONLYCONVERTING) to make explicit conversion ops
1630 work. See also reference_binding. */
1631 lflags |= LOOKUP_COPY_PARM;
1632 if (flags & LOOKUP_NO_COPY_CTOR_CONVERSION)
1633 lflags |= LOOKUP_NO_CONVERSION;
1636 lflags |= LOOKUP_ONLYCONVERTING;
1638 t = implicit_conversion (parmtype, argtype, arg,
1639 /*c_cast_p=*/false, lflags);
1643 t = build_identity_conv (argtype, arg);
1644 t->ellipsis_p = true;
1661 parmnode = TREE_CHAIN (parmnode);
1665 return add_candidate (candidates, fn, orig_first_arg, args, len, convs,
1666 access_path, conversion_path, viable);
1669 /* Create an overload candidate for the conversion function FN which will
1670 be invoked for expression OBJ, producing a pointer-to-function which
1671 will in turn be called with the argument list FIRST_ARG/ARGLIST,
1672 and add it to CANDIDATES. This does not change ARGLIST. FLAGS is
1673 passed on to implicit_conversion.
1675 Actually, we don't really care about FN; we care about the type it
1676 converts to. There may be multiple conversion functions that will
1677 convert to that type, and we rely on build_user_type_conversion_1 to
1678 choose the best one; so when we create our candidate, we record the type
1679 instead of the function. */
1681 static struct z_candidate *
1682 add_conv_candidate (struct z_candidate **candidates, tree fn, tree obj,
1683 tree first_arg, const VEC(tree,gc) *arglist,
1684 tree access_path, tree conversion_path)
1686 tree totype = TREE_TYPE (TREE_TYPE (fn));
1687 int i, len, viable, flags;
1688 tree parmlist, parmnode;
1691 for (parmlist = totype; TREE_CODE (parmlist) != FUNCTION_TYPE; )
1692 parmlist = TREE_TYPE (parmlist);
1693 parmlist = TYPE_ARG_TYPES (parmlist);
1695 len = VEC_length (tree, arglist) + (first_arg != NULL_TREE ? 1 : 0) + 1;
1696 convs = alloc_conversions (len);
1697 parmnode = parmlist;
1699 flags = LOOKUP_IMPLICIT;
1701 /* Don't bother looking up the same type twice. */
1702 if (*candidates && (*candidates)->fn == totype)
1705 for (i = 0; i < len; ++i)
1712 else if (i == 1 && first_arg != NULL_TREE)
1715 arg = VEC_index (tree, arglist,
1716 i - (first_arg != NULL_TREE ? 1 : 0) - 1);
1717 argtype = lvalue_type (arg);
1720 t = implicit_conversion (totype, argtype, arg, /*c_cast_p=*/false,
1722 else if (parmnode == void_list_node)
1725 t = implicit_conversion (TREE_VALUE (parmnode), argtype, arg,
1726 /*c_cast_p=*/false, flags);
1729 t = build_identity_conv (argtype, arg);
1730 t->ellipsis_p = true;
1744 parmnode = TREE_CHAIN (parmnode);
1750 if (!sufficient_parms_p (parmnode))
1753 return add_candidate (candidates, totype, first_arg, arglist, len, convs,
1754 access_path, conversion_path, viable);
1758 build_builtin_candidate (struct z_candidate **candidates, tree fnname,
1759 tree type1, tree type2, tree *args, tree *argtypes,
1771 num_convs = args[2] ? 3 : (args[1] ? 2 : 1);
1772 convs = alloc_conversions (num_convs);
1774 /* TRUTH_*_EXPR do "contextual conversion to bool", which means explicit
1775 conversion ops are allowed. We handle that here by just checking for
1776 boolean_type_node because other operators don't ask for it. COND_EXPR
1777 also does contextual conversion to bool for the first operand, but we
1778 handle that in build_conditional_expr, and type1 here is operand 2. */
1779 if (type1 != boolean_type_node)
1780 flags |= LOOKUP_ONLYCONVERTING;
1782 for (i = 0; i < 2; ++i)
1787 t = implicit_conversion (types[i], argtypes[i], args[i],
1788 /*c_cast_p=*/false, flags);
1792 /* We need something for printing the candidate. */
1793 t = build_identity_conv (types[i], NULL_TREE);
1800 /* For COND_EXPR we rearranged the arguments; undo that now. */
1803 convs[2] = convs[1];
1804 convs[1] = convs[0];
1805 t = implicit_conversion (boolean_type_node, argtypes[2], args[2],
1806 /*c_cast_p=*/false, flags);
1813 add_candidate (candidates, fnname, /*first_arg=*/NULL_TREE, /*args=*/NULL,
1815 /*access_path=*/NULL_TREE,
1816 /*conversion_path=*/NULL_TREE,
1821 is_complete (tree t)
1823 return COMPLETE_TYPE_P (complete_type (t));
1826 /* Returns nonzero if TYPE is a promoted arithmetic type. */
1829 promoted_arithmetic_type_p (tree type)
1833 In this section, the term promoted integral type is used to refer
1834 to those integral types which are preserved by integral promotion
1835 (including e.g. int and long but excluding e.g. char).
1836 Similarly, the term promoted arithmetic type refers to promoted
1837 integral types plus floating types. */
1838 return ((CP_INTEGRAL_TYPE_P (type)
1839 && same_type_p (type_promotes_to (type), type))
1840 || TREE_CODE (type) == REAL_TYPE);
1843 /* Create any builtin operator overload candidates for the operator in
1844 question given the converted operand types TYPE1 and TYPE2. The other
1845 args are passed through from add_builtin_candidates to
1846 build_builtin_candidate.
1848 TYPE1 and TYPE2 may not be permissible, and we must filter them.
1849 If CODE is requires candidates operands of the same type of the kind
1850 of which TYPE1 and TYPE2 are, we add both candidates
1851 CODE (TYPE1, TYPE1) and CODE (TYPE2, TYPE2). */
1854 add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
1855 enum tree_code code2, tree fnname, tree type1,
1856 tree type2, tree *args, tree *argtypes, int flags)
1860 case POSTINCREMENT_EXPR:
1861 case POSTDECREMENT_EXPR:
1862 args[1] = integer_zero_node;
1863 type2 = integer_type_node;
1872 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
1873 and VQ is either volatile or empty, there exist candidate operator
1874 functions of the form
1875 VQ T& operator++(VQ T&);
1876 T operator++(VQ T&, int);
1877 5 For every pair T, VQ), where T is an enumeration type or an arithmetic
1878 type other than bool, and VQ is either volatile or empty, there exist
1879 candidate operator functions of the form
1880 VQ T& operator--(VQ T&);
1881 T operator--(VQ T&, int);
1882 6 For every pair T, VQ), where T is a cv-qualified or cv-unqualified
1883 complete object type, and VQ is either volatile or empty, there exist
1884 candidate operator functions of the form
1885 T*VQ& operator++(T*VQ&);
1886 T*VQ& operator--(T*VQ&);
1887 T* operator++(T*VQ&, int);
1888 T* operator--(T*VQ&, int); */
1890 case POSTDECREMENT_EXPR:
1891 case PREDECREMENT_EXPR:
1892 if (TREE_CODE (type1) == BOOLEAN_TYPE)
1894 case POSTINCREMENT_EXPR:
1895 case PREINCREMENT_EXPR:
1896 if (ARITHMETIC_TYPE_P (type1) || TYPE_PTROB_P (type1))
1898 type1 = build_reference_type (type1);
1903 /* 7 For every cv-qualified or cv-unqualified complete object type T, there
1904 exist candidate operator functions of the form
1908 8 For every function type T, there exist candidate operator functions of
1910 T& operator*(T*); */
1913 if (TREE_CODE (type1) == POINTER_TYPE
1914 && (TYPE_PTROB_P (type1)
1915 || TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE))
1919 /* 9 For every type T, there exist candidate operator functions of the form
1922 10For every promoted arithmetic type T, there exist candidate operator
1923 functions of the form
1927 case UNARY_PLUS_EXPR: /* unary + */
1928 if (TREE_CODE (type1) == POINTER_TYPE)
1931 if (ARITHMETIC_TYPE_P (type1))
1935 /* 11For every promoted integral type T, there exist candidate operator
1936 functions of the form
1940 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1))
1944 /* 12For every quintuple C1, C2, T, CV1, CV2), where C2 is a class type, C1
1945 is the same type as C2 or is a derived class of C2, T is a complete
1946 object type or a function type, and CV1 and CV2 are cv-qualifier-seqs,
1947 there exist candidate operator functions of the form
1948 CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
1949 where CV12 is the union of CV1 and CV2. */
1952 if (TREE_CODE (type1) == POINTER_TYPE
1953 && TYPE_PTR_TO_MEMBER_P (type2))
1955 tree c1 = TREE_TYPE (type1);
1956 tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
1958 if (MAYBE_CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
1959 && (TYPE_PTRMEMFUNC_P (type2)
1960 || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
1965 /* 13For every pair of promoted arithmetic types L and R, there exist can-
1966 didate operator functions of the form
1971 bool operator<(L, R);
1972 bool operator>(L, R);
1973 bool operator<=(L, R);
1974 bool operator>=(L, R);
1975 bool operator==(L, R);
1976 bool operator!=(L, R);
1977 where LR is the result of the usual arithmetic conversions between
1980 14For every pair of types T and I, where T is a cv-qualified or cv-
1981 unqualified complete object type and I is a promoted integral type,
1982 there exist candidate operator functions of the form
1983 T* operator+(T*, I);
1984 T& operator[](T*, I);
1985 T* operator-(T*, I);
1986 T* operator+(I, T*);
1987 T& operator[](I, T*);
1989 15For every T, where T is a pointer to complete object type, there exist
1990 candidate operator functions of the form112)
1991 ptrdiff_t operator-(T, T);
1993 16For every pointer or enumeration type T, there exist candidate operator
1994 functions of the form
1995 bool operator<(T, T);
1996 bool operator>(T, T);
1997 bool operator<=(T, T);
1998 bool operator>=(T, T);
1999 bool operator==(T, T);
2000 bool operator!=(T, T);
2002 17For every pointer to member type T, there exist candidate operator
2003 functions of the form
2004 bool operator==(T, T);
2005 bool operator!=(T, T); */
2008 if (TYPE_PTROB_P (type1) && TYPE_PTROB_P (type2))
2010 if (TYPE_PTROB_P (type1)
2011 && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2013 type2 = ptrdiff_type_node;
2017 case TRUNC_DIV_EXPR:
2018 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2024 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2025 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2)))
2027 if (TYPE_PTR_TO_MEMBER_P (type1) && null_ptr_cst_p (args[1]))
2032 if (TYPE_PTR_TO_MEMBER_P (type2) && null_ptr_cst_p (args[0]))
2044 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2046 if (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2048 if (TREE_CODE (type1) == ENUMERAL_TYPE
2049 && TREE_CODE (type2) == ENUMERAL_TYPE)
2051 if (TYPE_PTR_P (type1)
2052 && null_ptr_cst_p (args[1])
2053 && !uses_template_parms (type1))
2058 if (null_ptr_cst_p (args[0])
2059 && TYPE_PTR_P (type2)
2060 && !uses_template_parms (type2))
2068 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2071 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && TYPE_PTROB_P (type2))
2073 type1 = ptrdiff_type_node;
2076 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2078 type2 = ptrdiff_type_node;
2083 /* 18For every pair of promoted integral types L and R, there exist candi-
2084 date operator functions of the form
2091 where LR is the result of the usual arithmetic conversions between
2094 case TRUNC_MOD_EXPR:
2100 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2104 /* 19For every triple L, VQ, R), where L is an arithmetic or enumeration
2105 type, VQ is either volatile or empty, and R is a promoted arithmetic
2106 type, there exist candidate operator functions of the form
2107 VQ L& operator=(VQ L&, R);
2108 VQ L& operator*=(VQ L&, R);
2109 VQ L& operator/=(VQ L&, R);
2110 VQ L& operator+=(VQ L&, R);
2111 VQ L& operator-=(VQ L&, R);
2113 20For every pair T, VQ), where T is any type and VQ is either volatile
2114 or empty, there exist candidate operator functions of the form
2115 T*VQ& operator=(T*VQ&, T*);
2117 21For every pair T, VQ), where T is a pointer to member type and VQ is
2118 either volatile or empty, there exist candidate operator functions of
2120 VQ T& operator=(VQ T&, T);
2122 22For every triple T, VQ, I), where T is a cv-qualified or cv-
2123 unqualified complete object type, VQ is either volatile or empty, and
2124 I is a promoted integral type, there exist candidate operator func-
2126 T*VQ& operator+=(T*VQ&, I);
2127 T*VQ& operator-=(T*VQ&, I);
2129 23For every triple L, VQ, R), where L is an integral or enumeration
2130 type, VQ is either volatile or empty, and R is a promoted integral
2131 type, there exist candidate operator functions of the form
2133 VQ L& operator%=(VQ L&, R);
2134 VQ L& operator<<=(VQ L&, R);
2135 VQ L& operator>>=(VQ L&, R);
2136 VQ L& operator&=(VQ L&, R);
2137 VQ L& operator^=(VQ L&, R);
2138 VQ L& operator|=(VQ L&, R); */
2145 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2147 type2 = ptrdiff_type_node;
2151 case TRUNC_DIV_EXPR:
2152 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2156 case TRUNC_MOD_EXPR:
2162 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2167 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2169 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2170 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2171 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2172 || ((TYPE_PTRMEMFUNC_P (type1)
2173 || TREE_CODE (type1) == POINTER_TYPE)
2174 && null_ptr_cst_p (args[1])))
2184 type1 = build_reference_type (type1);
2190 For every pair of promoted arithmetic types L and R, there
2191 exist candidate operator functions of the form
2193 LR operator?(bool, L, R);
2195 where LR is the result of the usual arithmetic conversions
2196 between types L and R.
2198 For every type T, where T is a pointer or pointer-to-member
2199 type, there exist candidate operator functions of the form T
2200 operator?(bool, T, T); */
2202 if (promoted_arithmetic_type_p (type1)
2203 && promoted_arithmetic_type_p (type2))
2207 /* Otherwise, the types should be pointers. */
2208 if (!(TYPE_PTR_P (type1) || TYPE_PTR_TO_MEMBER_P (type1))
2209 || !(TYPE_PTR_P (type2) || TYPE_PTR_TO_MEMBER_P (type2)))
2212 /* We don't check that the two types are the same; the logic
2213 below will actually create two candidates; one in which both
2214 parameter types are TYPE1, and one in which both parameter
2222 /* If we're dealing with two pointer types or two enumeral types,
2223 we need candidates for both of them. */
2224 if (type2 && !same_type_p (type1, type2)
2225 && TREE_CODE (type1) == TREE_CODE (type2)
2226 && (TREE_CODE (type1) == REFERENCE_TYPE
2227 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2228 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2229 || TYPE_PTRMEMFUNC_P (type1)
2230 || MAYBE_CLASS_TYPE_P (type1)
2231 || TREE_CODE (type1) == ENUMERAL_TYPE))
2233 build_builtin_candidate
2234 (candidates, fnname, type1, type1, args, argtypes, flags);
2235 build_builtin_candidate
2236 (candidates, fnname, type2, type2, args, argtypes, flags);
2240 build_builtin_candidate
2241 (candidates, fnname, type1, type2, args, argtypes, flags);
2245 type_decays_to (tree type)
2247 if (TREE_CODE (type) == ARRAY_TYPE)
2248 return build_pointer_type (TREE_TYPE (type));
2249 if (TREE_CODE (type) == FUNCTION_TYPE)
2250 return build_pointer_type (type);
2251 if (!MAYBE_CLASS_TYPE_P (type))
2252 type = cv_unqualified (type);
2256 /* There are three conditions of builtin candidates:
2258 1) bool-taking candidates. These are the same regardless of the input.
2259 2) pointer-pair taking candidates. These are generated for each type
2260 one of the input types converts to.
2261 3) arithmetic candidates. According to the standard, we should generate
2262 all of these, but I'm trying not to...
2264 Here we generate a superset of the possible candidates for this particular
2265 case. That is a subset of the full set the standard defines, plus some
2266 other cases which the standard disallows. add_builtin_candidate will
2267 filter out the invalid set. */
2270 add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
2271 enum tree_code code2, tree fnname, tree *args,
2276 tree type, argtypes[3];
2277 /* TYPES[i] is the set of possible builtin-operator parameter types
2278 we will consider for the Ith argument. These are represented as
2279 a TREE_LIST; the TREE_VALUE of each node is the potential
2283 for (i = 0; i < 3; ++i)
2286 argtypes[i] = unlowered_expr_type (args[i]);
2288 argtypes[i] = NULL_TREE;
2293 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
2294 and VQ is either volatile or empty, there exist candidate operator
2295 functions of the form
2296 VQ T& operator++(VQ T&); */
2298 case POSTINCREMENT_EXPR:
2299 case PREINCREMENT_EXPR:
2300 case POSTDECREMENT_EXPR:
2301 case PREDECREMENT_EXPR:
2306 /* 24There also exist candidate operator functions of the form
2307 bool operator!(bool);
2308 bool operator&&(bool, bool);
2309 bool operator||(bool, bool); */
2311 case TRUTH_NOT_EXPR:
2312 build_builtin_candidate
2313 (candidates, fnname, boolean_type_node,
2314 NULL_TREE, args, argtypes, flags);
2317 case TRUTH_ORIF_EXPR:
2318 case TRUTH_ANDIF_EXPR:
2319 build_builtin_candidate
2320 (candidates, fnname, boolean_type_node,
2321 boolean_type_node, args, argtypes, flags);
2343 types[0] = types[1] = NULL_TREE;
2345 for (i = 0; i < 2; ++i)
2349 else if (MAYBE_CLASS_TYPE_P (argtypes[i]))
2353 if (i == 0 && code == MODIFY_EXPR && code2 == NOP_EXPR)
2356 convs = lookup_conversions (argtypes[i],
2357 /*lookup_template_convs_p=*/false);
2359 if (code == COND_EXPR)
2361 if (real_lvalue_p (args[i]))
2362 types[i] = tree_cons
2363 (NULL_TREE, build_reference_type (argtypes[i]), types[i]);
2365 types[i] = tree_cons
2366 (NULL_TREE, TYPE_MAIN_VARIANT (argtypes[i]), types[i]);
2372 for (; convs; convs = TREE_CHAIN (convs))
2374 type = TREE_TYPE (convs);
2377 && (TREE_CODE (type) != REFERENCE_TYPE
2378 || CP_TYPE_CONST_P (TREE_TYPE (type))))
2381 if (code == COND_EXPR && TREE_CODE (type) == REFERENCE_TYPE)
2382 types[i] = tree_cons (NULL_TREE, type, types[i]);
2384 type = non_reference (type);
2385 if (i != 0 || ! ref1)
2387 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2388 if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
2389 types[i] = tree_cons (NULL_TREE, type, types[i]);
2390 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2391 type = type_promotes_to (type);
2394 if (! value_member (type, types[i]))
2395 types[i] = tree_cons (NULL_TREE, type, types[i]);
2400 if (code == COND_EXPR && real_lvalue_p (args[i]))
2401 types[i] = tree_cons
2402 (NULL_TREE, build_reference_type (argtypes[i]), types[i]);
2403 type = non_reference (argtypes[i]);
2404 if (i != 0 || ! ref1)
2406 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2407 if (enum_p && UNSCOPED_ENUM_P (type))
2408 types[i] = tree_cons (NULL_TREE, type, types[i]);
2409 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2410 type = type_promotes_to (type);
2412 types[i] = tree_cons (NULL_TREE, type, types[i]);
2416 /* Run through the possible parameter types of both arguments,
2417 creating candidates with those parameter types. */
2418 for (; types[0]; types[0] = TREE_CHAIN (types[0]))
2421 for (type = types[1]; type; type = TREE_CHAIN (type))
2422 add_builtin_candidate
2423 (candidates, code, code2, fnname, TREE_VALUE (types[0]),
2424 TREE_VALUE (type), args, argtypes, flags);
2426 add_builtin_candidate
2427 (candidates, code, code2, fnname, TREE_VALUE (types[0]),
2428 NULL_TREE, args, argtypes, flags);
2433 /* If TMPL can be successfully instantiated as indicated by
2434 EXPLICIT_TARGS and ARGLIST, adds the instantiation to CANDIDATES.
2436 TMPL is the template. EXPLICIT_TARGS are any explicit template
2437 arguments. ARGLIST is the arguments provided at the call-site.
2438 This does not change ARGLIST. The RETURN_TYPE is the desired type
2439 for conversion operators. If OBJ is NULL_TREE, FLAGS and CTYPE are
2440 as for add_function_candidate. If an OBJ is supplied, FLAGS and
2441 CTYPE are ignored, and OBJ is as for add_conv_candidate. */
2443 static struct z_candidate*
2444 add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
2445 tree ctype, tree explicit_targs, tree first_arg,
2446 const VEC(tree,gc) *arglist, tree return_type,
2447 tree access_path, tree conversion_path,
2448 int flags, tree obj, unification_kind_t strict)
2450 int ntparms = DECL_NTPARMS (tmpl);
2451 tree targs = make_tree_vec (ntparms);
2452 unsigned int len = VEC_length (tree, arglist);
2453 unsigned int nargs = (first_arg == NULL_TREE ? 0 : 1) + len;
2454 unsigned int skip_without_in_chrg = 0;
2455 tree first_arg_without_in_chrg = first_arg;
2456 tree *args_without_in_chrg;
2457 unsigned int nargs_without_in_chrg;
2458 unsigned int ia, ix;
2460 struct z_candidate *cand;
2464 /* We don't do deduction on the in-charge parameter, the VTT
2465 parameter or 'this'. */
2466 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (tmpl))
2468 if (first_arg_without_in_chrg != NULL_TREE)
2469 first_arg_without_in_chrg = NULL_TREE;
2471 ++skip_without_in_chrg;
2474 if ((DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (tmpl)
2475 || DECL_BASE_CONSTRUCTOR_P (tmpl))
2476 && CLASSTYPE_VBASECLASSES (DECL_CONTEXT (tmpl)))
2478 if (first_arg_without_in_chrg != NULL_TREE)
2479 first_arg_without_in_chrg = NULL_TREE;
2481 ++skip_without_in_chrg;
2484 if (len < skip_without_in_chrg)
2487 nargs_without_in_chrg = ((first_arg_without_in_chrg != NULL_TREE ? 1 : 0)
2488 + (len - skip_without_in_chrg));
2489 args_without_in_chrg = XALLOCAVEC (tree, nargs_without_in_chrg);
2491 if (first_arg_without_in_chrg != NULL_TREE)
2493 args_without_in_chrg[ia] = first_arg_without_in_chrg;
2496 for (ix = skip_without_in_chrg;
2497 VEC_iterate (tree, arglist, ix, arg);
2500 args_without_in_chrg[ia] = arg;
2503 gcc_assert (ia == nargs_without_in_chrg);
2505 i = fn_type_unification (tmpl, explicit_targs, targs,
2506 args_without_in_chrg,
2507 nargs_without_in_chrg,
2508 return_type, strict, flags);
2513 fn = instantiate_template (tmpl, targs, tf_none);
2514 if (fn == error_mark_node)
2519 A member function template is never instantiated to perform the
2520 copy of a class object to an object of its class type.
2522 It's a little unclear what this means; the standard explicitly
2523 does allow a template to be used to copy a class. For example,
2528 template <class T> A(const T&);
2531 void g () { A a (f ()); }
2533 the member template will be used to make the copy. The section
2534 quoted above appears in the paragraph that forbids constructors
2535 whose only parameter is (a possibly cv-qualified variant of) the
2536 class type, and a logical interpretation is that the intent was
2537 to forbid the instantiation of member templates which would then
2539 if (DECL_CONSTRUCTOR_P (fn) && nargs == 2)
2541 tree arg_types = FUNCTION_FIRST_USER_PARMTYPE (fn);
2542 if (arg_types && same_type_p (TYPE_MAIN_VARIANT (TREE_VALUE (arg_types)),
2547 if (obj != NULL_TREE)
2548 /* Aha, this is a conversion function. */
2549 cand = add_conv_candidate (candidates, fn, obj, first_arg, arglist,
2550 access_path, conversion_path);
2552 cand = add_function_candidate (candidates, fn, ctype,
2553 first_arg, arglist, access_path,
2554 conversion_path, flags);
2555 if (DECL_TI_TEMPLATE (fn) != tmpl)
2556 /* This situation can occur if a member template of a template
2557 class is specialized. Then, instantiate_template might return
2558 an instantiation of the specialization, in which case the
2559 DECL_TI_TEMPLATE field will point at the original
2560 specialization. For example:
2562 template <class T> struct S { template <class U> void f(U);
2563 template <> void f(int) {}; };
2567 Here, TMPL will be template <class U> S<double>::f(U).
2568 And, instantiate template will give us the specialization
2569 template <> S<double>::f(int). But, the DECL_TI_TEMPLATE field
2570 for this will point at template <class T> template <> S<T>::f(int),
2571 so that we can find the definition. For the purposes of
2572 overload resolution, however, we want the original TMPL. */
2573 cand->template_decl = build_template_info (tmpl, targs);
2575 cand->template_decl = DECL_TEMPLATE_INFO (fn);
2579 return add_candidate (candidates, tmpl, first_arg, arglist, nargs, NULL,
2580 access_path, conversion_path, 0);
2584 static struct z_candidate *
2585 add_template_candidate (struct z_candidate **candidates, tree tmpl, tree ctype,
2586 tree explicit_targs, tree first_arg,
2587 const VEC(tree,gc) *arglist, tree return_type,
2588 tree access_path, tree conversion_path, int flags,
2589 unification_kind_t strict)
2592 add_template_candidate_real (candidates, tmpl, ctype,
2593 explicit_targs, first_arg, arglist,
2594 return_type, access_path, conversion_path,
2595 flags, NULL_TREE, strict);
2599 static struct z_candidate *
2600 add_template_conv_candidate (struct z_candidate **candidates, tree tmpl,
2601 tree obj, tree first_arg,
2602 const VEC(tree,gc) *arglist,
2603 tree return_type, tree access_path,
2604 tree conversion_path)
2607 add_template_candidate_real (candidates, tmpl, NULL_TREE, NULL_TREE,
2608 first_arg, arglist, return_type, access_path,
2609 conversion_path, 0, obj, DEDUCE_CONV);
2612 /* The CANDS are the set of candidates that were considered for
2613 overload resolution. Return the set of viable candidates, or CANDS
2614 if none are viable. If any of the candidates were viable, set
2615 *ANY_VIABLE_P to true. STRICT_P is true if a candidate should be
2616 considered viable only if it is strictly viable. */
2618 static struct z_candidate*
2619 splice_viable (struct z_candidate *cands,
2623 struct z_candidate *viable;
2624 struct z_candidate **last_viable;
2625 struct z_candidate **cand;
2628 last_viable = &viable;
2629 *any_viable_p = false;
2634 struct z_candidate *c = *cand;
2635 if (strict_p ? c->viable == 1 : c->viable)
2640 last_viable = &c->next;
2641 *any_viable_p = true;
2647 return viable ? viable : cands;
2651 any_strictly_viable (struct z_candidate *cands)
2653 for (; cands; cands = cands->next)
2654 if (cands->viable == 1)
2659 /* OBJ is being used in an expression like "OBJ.f (...)". In other
2660 words, it is about to become the "this" pointer for a member
2661 function call. Take the address of the object. */
2664 build_this (tree obj)
2666 /* In a template, we are only concerned about the type of the
2667 expression, so we can take a shortcut. */
2668 if (processing_template_decl)
2669 return build_address (obj);
2671 return cp_build_unary_op (ADDR_EXPR, obj, 0, tf_warning_or_error);
2674 /* Returns true iff functions are equivalent. Equivalent functions are
2675 not '==' only if one is a function-local extern function or if
2676 both are extern "C". */
2679 equal_functions (tree fn1, tree fn2)
2681 if (TREE_CODE (fn1) != TREE_CODE (fn2))
2683 if (TREE_CODE (fn1) == TEMPLATE_DECL)
2685 if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2)
2686 || DECL_EXTERN_C_FUNCTION_P (fn1))
2687 return decls_match (fn1, fn2);
2691 /* Print information about one overload candidate CANDIDATE. MSGSTR
2692 is the text to print before the candidate itself.
2694 NOTE: Unlike most diagnostic functions in GCC, MSGSTR is expected
2695 to have been run through gettext by the caller. This wart makes
2696 life simpler in print_z_candidates and for the translators. */
2699 print_z_candidate (const char *msgstr, struct z_candidate *candidate)
2701 if (TREE_CODE (candidate->fn) == IDENTIFIER_NODE)
2703 if (candidate->num_convs == 3)
2704 inform (input_location, "%s %D(%T, %T, %T) <built-in>", msgstr, candidate->fn,
2705 candidate->convs[0]->type,
2706 candidate->convs[1]->type,
2707 candidate->convs[2]->type);
2708 else if (candidate->num_convs == 2)
2709 inform (input_location, "%s %D(%T, %T) <built-in>", msgstr, candidate->fn,
2710 candidate->convs[0]->type,
2711 candidate->convs[1]->type);
2713 inform (input_location, "%s %D(%T) <built-in>", msgstr, candidate->fn,
2714 candidate->convs[0]->type);
2716 else if (TYPE_P (candidate->fn))
2717 inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
2718 else if (candidate->viable == -1)
2719 inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn);
2720 else if (DECL_DELETED_FN (STRIP_TEMPLATE (candidate->fn)))
2721 inform (input_location, "%s %+#D <deleted>", msgstr, candidate->fn);
2723 inform (input_location, "%s %+#D", msgstr, candidate->fn);
2727 print_z_candidates (struct z_candidate *candidates)
2730 struct z_candidate *cand1;
2731 struct z_candidate **cand2;
2737 /* Remove deleted candidates. */
2739 for (cand2 = &cand1; *cand2; )
2741 if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
2742 && DECL_DELETED_FN ((*cand2)->fn))
2743 *cand2 = (*cand2)->next;
2745 cand2 = &(*cand2)->next;
2747 /* ...if there are any non-deleted ones. */
2751 /* There may be duplicates in the set of candidates. We put off
2752 checking this condition as long as possible, since we have no way
2753 to eliminate duplicates from a set of functions in less than n^2
2754 time. Now we are about to emit an error message, so it is more
2755 permissible to go slowly. */
2756 for (cand1 = candidates; cand1; cand1 = cand1->next)
2758 tree fn = cand1->fn;
2759 /* Skip builtin candidates and conversion functions. */
2762 cand2 = &cand1->next;
2765 if (DECL_P ((*cand2)->fn)
2766 && equal_functions (fn, (*cand2)->fn))
2767 *cand2 = (*cand2)->next;
2769 cand2 = &(*cand2)->next;
2773 str = candidates->next ? _("candidates are:") : _("candidate is:");
2775 for (; candidates; candidates = candidates->next)
2777 print_z_candidate (spaces ? spaces : str, candidates);
2778 spaces = spaces ? spaces : get_spaces (str);
2783 /* USER_SEQ is a user-defined conversion sequence, beginning with a
2784 USER_CONV. STD_SEQ is the standard conversion sequence applied to
2785 the result of the conversion function to convert it to the final
2786 desired type. Merge the two sequences into a single sequence,
2787 and return the merged sequence. */
2790 merge_conversion_sequences (conversion *user_seq, conversion *std_seq)
2794 gcc_assert (user_seq->kind == ck_user);
2796 /* Find the end of the second conversion sequence. */
2798 while ((*t)->kind != ck_identity)
2799 t = &((*t)->u.next);
2801 /* Replace the identity conversion with the user conversion
2805 /* The entire sequence is a user-conversion sequence. */
2806 std_seq->user_conv_p = true;
2811 /* Returns the best overload candidate to perform the requested
2812 conversion. This function is used for three the overloading situations
2813 described in [over.match.copy], [over.match.conv], and [over.match.ref].
2814 If TOTYPE is a REFERENCE_TYPE, we're trying to find an lvalue binding as
2815 per [dcl.init.ref], so we ignore temporary bindings. */
2817 static struct z_candidate *
2818 build_user_type_conversion_1 (tree totype, tree expr, int flags)
2820 struct z_candidate *candidates, *cand;
2821 tree fromtype = TREE_TYPE (expr);
2822 tree ctors = NULL_TREE;
2823 tree conv_fns = NULL_TREE;
2824 conversion *conv = NULL;
2825 tree first_arg = NULL_TREE;
2826 VEC(tree,gc) *args = NULL;
2830 /* We represent conversion within a hierarchy using RVALUE_CONV and
2831 BASE_CONV, as specified by [over.best.ics]; these become plain
2832 constructor calls, as specified in [dcl.init]. */
2833 gcc_assert (!MAYBE_CLASS_TYPE_P (fromtype) || !MAYBE_CLASS_TYPE_P (totype)
2834 || !DERIVED_FROM_P (totype, fromtype));
2836 if (MAYBE_CLASS_TYPE_P (totype))
2837 ctors = lookup_fnfields (totype, complete_ctor_identifier, 0);
2839 if (MAYBE_CLASS_TYPE_P (fromtype))
2841 tree to_nonref = non_reference (totype);
2842 if (same_type_ignoring_top_level_qualifiers_p (to_nonref, fromtype) ||
2843 (CLASS_TYPE_P (to_nonref) && CLASS_TYPE_P (fromtype)
2844 && DERIVED_FROM_P (to_nonref, fromtype)))
2846 /* [class.conv.fct] A conversion function is never used to
2847 convert a (possibly cv-qualified) object to the (possibly
2848 cv-qualified) same object type (or a reference to it), to a
2849 (possibly cv-qualified) base class of that type (or a
2850 reference to it)... */
2853 conv_fns = lookup_conversions (fromtype,
2854 /*lookup_template_convs_p=*/true);
2858 flags |= LOOKUP_NO_CONVERSION;
2859 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
2860 flags |= LOOKUP_NO_NARROWING;
2862 /* It's OK to bind a temporary for converting constructor arguments, but
2863 not in converting the return value of a conversion operator. */
2864 convflags = ((flags & LOOKUP_NO_TEMP_BIND) | LOOKUP_NO_CONVERSION);
2865 flags &= ~LOOKUP_NO_TEMP_BIND;
2869 int ctorflags = flags;
2870 bool try_single_arg = true;
2871 ctors = BASELINK_FUNCTIONS (ctors);
2873 first_arg = build_int_cst (build_pointer_type (totype), 0);
2874 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
2876 /* For list-initialization we consider explicit constructors, but
2877 give an error if one is selected. */
2878 ctorflags &= ~LOOKUP_ONLYCONVERTING;
2879 /* If the class has a list ctor, try passing the list as a single
2880 argument first, but only consider list ctors. */
2881 if (TYPE_HAS_LIST_CTOR (totype))
2882 ctorflags |= LOOKUP_LIST_ONLY;
2884 try_single_arg = false;
2887 /* We should never try to call the abstract or base constructor
2889 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (OVL_CURRENT (ctors))
2890 && !DECL_HAS_VTT_PARM_P (OVL_CURRENT (ctors)));
2892 /* If EXPR is not an initializer-list, or if totype has a list
2893 constructor, try EXPR as a single argument. */
2896 args = make_tree_vector_single (expr);
2897 add_candidates (ctors, first_arg, args, NULL_TREE, NULL_TREE, false,
2898 TYPE_BINFO (totype), TYPE_BINFO (totype),
2899 ctorflags, &candidates);
2902 /* If we didn't find a suitable list constructor for an initializer-list,
2903 try breaking it apart. */
2904 if (!candidates && BRACE_ENCLOSED_INITIALIZER_P (expr))
2906 args = ctor_to_vec (expr);
2907 /* We aren't looking for list-ctors anymore. */
2908 ctorflags &= ~LOOKUP_LIST_ONLY;
2909 /* We still allow more conversions within an init-list. */
2910 ctorflags &= ~LOOKUP_NO_CONVERSION;
2911 /* But not for the copy ctor. */
2912 ctorflags |= LOOKUP_NO_COPY_CTOR_CONVERSION;
2913 add_candidates (ctors, first_arg, args, NULL_TREE, NULL_TREE, false,
2914 TYPE_BINFO (totype), TYPE_BINFO (totype),
2915 ctorflags, &candidates);
2918 for (cand = candidates; cand; cand = cand->next)
2920 cand->second_conv = build_identity_conv (totype, NULL_TREE);
2922 /* If totype isn't a reference, and LOOKUP_NO_TEMP_BIND isn't
2923 set, then this is copy-initialization. In that case, "The
2924 result of the call is then used to direct-initialize the
2925 object that is the destination of the copy-initialization."
2928 We represent this in the conversion sequence with an
2929 rvalue conversion, which means a constructor call. */
2930 if (TREE_CODE (totype) != REFERENCE_TYPE
2931 && !(convflags & LOOKUP_NO_TEMP_BIND))
2933 = build_conv (ck_rvalue, totype, cand->second_conv);
2938 first_arg = build_this (expr);
2940 for (; conv_fns; conv_fns = TREE_CHAIN (conv_fns))
2942 tree conversion_path = TREE_PURPOSE (conv_fns);
2943 struct z_candidate *old_candidates;
2945 /* If we are called to convert to a reference type, we are trying to
2946 find an lvalue binding, so don't even consider temporaries. If
2947 we don't find an lvalue binding, the caller will try again to
2948 look for a temporary binding. */
2949 if (TREE_CODE (totype) == REFERENCE_TYPE)
2950 convflags |= LOOKUP_NO_TEMP_BIND;
2952 old_candidates = candidates;
2953 add_candidates (TREE_VALUE (conv_fns), first_arg, NULL, totype,
2955 conversion_path, TYPE_BINFO (fromtype),
2956 flags, &candidates);
2958 for (cand = candidates; cand != old_candidates; cand = cand->next)
2961 = implicit_conversion (totype,
2962 TREE_TYPE (TREE_TYPE (cand->fn)),
2964 /*c_cast_p=*/false, convflags);
2966 /* If LOOKUP_NO_TEMP_BIND isn't set, then this is
2967 copy-initialization. In that case, "The result of the
2968 call is then used to direct-initialize the object that is
2969 the destination of the copy-initialization." [dcl.init]
2971 We represent this in the conversion sequence with an
2972 rvalue conversion, which means a constructor call. But
2973 don't add a second rvalue conversion if there's already
2974 one there. Which there really shouldn't be, but it's
2975 harmless since we'd add it here anyway. */
2976 if (ics && MAYBE_CLASS_TYPE_P (totype) && ics->kind != ck_rvalue
2977 && !(convflags & LOOKUP_NO_TEMP_BIND))
2978 ics = build_conv (ck_rvalue, totype, ics);
2980 cand->second_conv = ics;
2984 else if (cand->viable == 1 && ics->bad_p)
2989 candidates = splice_viable (candidates, pedantic, &any_viable_p);
2993 cand = tourney (candidates);
2996 if (flags & LOOKUP_COMPLAIN)
2998 error ("conversion from %qT to %qT is ambiguous",
3000 print_z_candidates (candidates);
3003 cand = candidates; /* any one will do */
3004 cand->second_conv = build_ambiguous_conv (totype, expr);
3005 cand->second_conv->user_conv_p = true;
3006 if (!any_strictly_viable (candidates))
3007 cand->second_conv->bad_p = true;
3008 /* If there are viable candidates, don't set ICS_BAD_FLAG; an
3009 ambiguous conversion is no worse than another user-defined
3015 /* Build the user conversion sequence. */
3018 (DECL_CONSTRUCTOR_P (cand->fn)
3019 ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
3020 build_identity_conv (TREE_TYPE (expr), expr));
3023 /* Remember that this was a list-initialization. */
3024 if (flags & LOOKUP_NO_NARROWING)
3025 conv->check_narrowing = true;
3027 /* Combine it with the second conversion sequence. */
3028 cand->second_conv = merge_conversion_sequences (conv,
3031 if (cand->viable == -1)
3032 cand->second_conv->bad_p = true;
3038 build_user_type_conversion (tree totype, tree expr, int flags)
3040 struct z_candidate *cand
3041 = build_user_type_conversion_1 (totype, expr, flags);
3045 if (cand->second_conv->kind == ck_ambig)
3046 return error_mark_node;
3047 expr = convert_like (cand->second_conv, expr, tf_warning_or_error);
3048 return convert_from_reference (expr);
3053 /* Do any initial processing on the arguments to a function call. */
3055 static VEC(tree,gc) *
3056 resolve_args (VEC(tree,gc) *args)
3061 for (ix = 0; VEC_iterate (tree, args, ix, arg); ++ix)
3063 if (error_operand_p (arg))
3065 else if (VOID_TYPE_P (TREE_TYPE (arg)))
3067 error ("invalid use of void expression");
3070 else if (invalid_nonstatic_memfn_p (arg, tf_warning_or_error))
3076 /* Perform overload resolution on FN, which is called with the ARGS.
3078 Return the candidate function selected by overload resolution, or
3079 NULL if the event that overload resolution failed. In the case
3080 that overload resolution fails, *CANDIDATES will be the set of
3081 candidates considered, and ANY_VIABLE_P will be set to true or
3082 false to indicate whether or not any of the candidates were
3085 The ARGS should already have gone through RESOLVE_ARGS before this
3086 function is called. */
3088 static struct z_candidate *
3089 perform_overload_resolution (tree fn,
3090 const VEC(tree,gc) *args,
3091 struct z_candidate **candidates,
3094 struct z_candidate *cand;
3095 tree explicit_targs = NULL_TREE;
3096 int template_only = 0;
3099 *any_viable_p = true;
3102 gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
3103 || TREE_CODE (fn) == TEMPLATE_DECL
3104 || TREE_CODE (fn) == OVERLOAD
3105 || TREE_CODE (fn) == TEMPLATE_ID_EXPR);
3107 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3109 explicit_targs = TREE_OPERAND (fn, 1);
3110 fn = TREE_OPERAND (fn, 0);
3114 /* Add the various candidate functions. */
3115 add_candidates (fn, NULL_TREE, args, NULL_TREE,
3116 explicit_targs, template_only,
3117 /*conversion_path=*/NULL_TREE,
3118 /*access_path=*/NULL_TREE,
3122 *candidates = splice_viable (*candidates, pedantic, any_viable_p);
3126 cand = tourney (*candidates);
3130 /* Return an expression for a call to FN (a namespace-scope function,
3131 or a static member function) with the ARGS. This may change
3135 build_new_function_call (tree fn, VEC(tree,gc) **args, bool koenig_p,
3136 tsubst_flags_t complain)
3138 struct z_candidate *candidates, *cand;
3143 if (args != NULL && *args != NULL)
3145 *args = resolve_args (*args);
3147 return error_mark_node;
3150 /* If this function was found without using argument dependent
3151 lookup, then we want to ignore any undeclared friend
3157 fn = remove_hidden_names (fn);
3160 if (complain & tf_error)
3161 error ("no matching function for call to %<%D(%A)%>",
3162 DECL_NAME (OVL_CURRENT (orig_fn)),
3163 build_tree_list_vec (*args));
3164 return error_mark_node;
3168 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3169 p = conversion_obstack_alloc (0);
3171 cand = perform_overload_resolution (fn, *args, &candidates, &any_viable_p);
3175 if (complain & tf_error)
3177 if (!any_viable_p && candidates && ! candidates->next
3178 && (TREE_CODE (candidates->fn) == FUNCTION_DECL))
3179 return cp_build_function_call_vec (candidates->fn, args, complain);
3180 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3181 fn = TREE_OPERAND (fn, 0);
3183 error ("no matching function for call to %<%D(%A)%>",
3184 DECL_NAME (OVL_CURRENT (fn)), build_tree_list_vec (*args));
3186 error ("call of overloaded %<%D(%A)%> is ambiguous",
3187 DECL_NAME (OVL_CURRENT (fn)), build_tree_list_vec (*args));
3189 print_z_candidates (candidates);
3191 result = error_mark_node;
3194 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3196 /* Free all the conversions we allocated. */
3197 obstack_free (&conversion_obstack, p);
3202 /* Build a call to a global operator new. FNNAME is the name of the
3203 operator (either "operator new" or "operator new[]") and ARGS are
3204 the arguments provided. This may change ARGS. *SIZE points to the
3205 total number of bytes required by the allocation, and is updated if
3206 that is changed here. *COOKIE_SIZE is non-NULL if a cookie should
3207 be used. If this function determines that no cookie should be
3208 used, after all, *COOKIE_SIZE is set to NULL_TREE. If FN is
3209 non-NULL, it will be set, upon return, to the allocation function
3213 build_operator_new_call (tree fnname, VEC(tree,gc) **args,
3214 tree *size, tree *cookie_size,
3218 struct z_candidate *candidates;
3219 struct z_candidate *cand;
3224 VEC_safe_insert (tree, gc, *args, 0, *size);
3225 *args = resolve_args (*args);
3227 return error_mark_node;
3233 If this lookup fails to find the name, or if the allocated type
3234 is not a class type, the allocation function's name is looked
3235 up in the global scope.
3237 we disregard block-scope declarations of "operator new". */
3238 fns = lookup_function_nonclass (fnname, *args, /*block_p=*/false);
3240 /* Figure out what function is being called. */
3241 cand = perform_overload_resolution (fns, *args, &candidates, &any_viable_p);
3243 /* If no suitable function could be found, issue an error message
3248 error ("no matching function for call to %<%D(%A)%>",
3249 DECL_NAME (OVL_CURRENT (fns)), build_tree_list_vec (*args));
3251 error ("call of overloaded %<%D(%A)%> is ambiguous",
3252 DECL_NAME (OVL_CURRENT (fns)), build_tree_list_vec (*args));
3254 print_z_candidates (candidates);
3255 return error_mark_node;
3258 /* If a cookie is required, add some extra space. Whether
3259 or not a cookie is required cannot be determined until
3260 after we know which function was called. */
3263 bool use_cookie = true;
3264 if (!abi_version_at_least (2))
3266 /* In G++ 3.2, the check was implemented incorrectly; it
3267 looked at the placement expression, rather than the
3268 type of the function. */
3269 if (VEC_length (tree, *args) == 2
3270 && same_type_p (TREE_TYPE (VEC_index (tree, *args, 1)),
3278 arg_types = TYPE_ARG_TYPES (TREE_TYPE (cand->fn));
3279 /* Skip the size_t parameter. */
3280 arg_types = TREE_CHAIN (arg_types);
3281 /* Check the remaining parameters (if any). */
3283 && TREE_CHAIN (arg_types) == void_list_node
3284 && same_type_p (TREE_VALUE (arg_types),
3288 /* If we need a cookie, adjust the number of bytes allocated. */
3291 /* Update the total size. */
3292 *size = size_binop (PLUS_EXPR, *size, *cookie_size);
3293 /* Update the argument list to reflect the adjusted size. */
3294 VEC_replace (tree, *args, 0, *size);
3297 *cookie_size = NULL_TREE;
3300 /* Tell our caller which function we decided to call. */
3304 /* Build the CALL_EXPR. */
3305 return build_over_call (cand, LOOKUP_NORMAL, tf_warning_or_error);
3308 /* Build a new call to operator(). This may change ARGS. */
3311 build_op_call (tree obj, VEC(tree,gc) **args, tsubst_flags_t complain)
3313 struct z_candidate *candidates = 0, *cand;
3314 tree fns, convs, first_mem_arg = NULL_TREE;
3315 tree type = TREE_TYPE (obj);
3317 tree result = NULL_TREE;
3320 if (error_operand_p (obj))
3321 return error_mark_node;
3323 obj = prep_operand (obj);
3325 if (TYPE_PTRMEMFUNC_P (type))
3327 if (complain & tf_error)
3328 /* It's no good looking for an overloaded operator() on a
3329 pointer-to-member-function. */
3330 error ("pointer-to-member function %E cannot be called without an object; consider using .* or ->*", obj);
3331 return error_mark_node;
3334 if (TYPE_BINFO (type))
3336 fns = lookup_fnfields (TYPE_BINFO (type), ansi_opname (CALL_EXPR), 1);
3337 if (fns == error_mark_node)
3338 return error_mark_node;
3343 if (args != NULL && *args != NULL)
3345 *args = resolve_args (*args);
3347 return error_mark_node;
3350 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3351 p = conversion_obstack_alloc (0);
3355 first_mem_arg = build_this (obj);
3357 add_candidates (BASELINK_FUNCTIONS (fns),
3358 first_mem_arg, *args, NULL_TREE,
3360 BASELINK_BINFO (fns), BASELINK_ACCESS_BINFO (fns),
3361 LOOKUP_NORMAL, &candidates);
3364 convs = lookup_conversions (type, /*lookup_template_convs_p=*/true);
3366 for (; convs; convs = TREE_CHAIN (convs))
3368 tree fns = TREE_VALUE (convs);
3369 tree totype = TREE_TYPE (convs);
3371 if ((TREE_CODE (totype) == POINTER_TYPE
3372 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
3373 || (TREE_CODE (totype) == REFERENCE_TYPE
3374 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
3375 || (TREE_CODE (totype) == REFERENCE_TYPE
3376 && TREE_CODE (TREE_TYPE (totype)) == POINTER_TYPE
3377 && TREE_CODE (TREE_TYPE (TREE_TYPE (totype))) == FUNCTION_TYPE))
3378 for (; fns; fns = OVL_NEXT (fns))
3380 tree fn = OVL_CURRENT (fns);
3382 if (DECL_NONCONVERTING_P (fn))
3385 if (TREE_CODE (fn) == TEMPLATE_DECL)
3386 add_template_conv_candidate
3387 (&candidates, fn, obj, NULL_TREE, *args, totype,
3388 /*access_path=*/NULL_TREE,
3389 /*conversion_path=*/NULL_TREE);
3391 add_conv_candidate (&candidates, fn, obj, NULL_TREE,
3392 *args, /*conversion_path=*/NULL_TREE,
3393 /*access_path=*/NULL_TREE);
3397 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3400 if (complain & tf_error)
3402 error ("no match for call to %<(%T) (%A)%>", TREE_TYPE (obj),
3403 build_tree_list_vec (*args));
3404 print_z_candidates (candidates);
3406 result = error_mark_node;
3410 cand = tourney (candidates);
3413 if (complain & tf_error)
3415 error ("call of %<(%T) (%A)%> is ambiguous",
3416 TREE_TYPE (obj), build_tree_list_vec (*args));
3417 print_z_candidates (candidates);
3419 result = error_mark_node;
3421 /* Since cand->fn will be a type, not a function, for a conversion
3422 function, we must be careful not to unconditionally look at
3424 else if (TREE_CODE (cand->fn) == FUNCTION_DECL
3425 && DECL_OVERLOADED_OPERATOR_P (cand->fn) == CALL_EXPR)
3426 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3429 obj = convert_like_with_context (cand->convs[0], obj, cand->fn, -1,
3431 obj = convert_from_reference (obj);
3432 result = cp_build_function_call_vec (obj, args, complain);
3436 /* Free all the conversions we allocated. */
3437 obstack_free (&conversion_obstack, p);
3443 op_error (enum tree_code code, enum tree_code code2,
3444 tree arg1, tree arg2, tree arg3, bool match)
3448 if (code == MODIFY_EXPR)
3449 opname = assignment_operator_name_info[code2].name;
3451 opname = operator_name_info[code].name;
3457 error ("ambiguous overload for ternary %<operator?:%> "
3458 "in %<%E ? %E : %E%>", arg1, arg2, arg3);
3460 error ("no match for ternary %<operator?:%> "
3461 "in %<%E ? %E : %E%>", arg1, arg2, arg3);
3464 case POSTINCREMENT_EXPR:
3465 case POSTDECREMENT_EXPR:
3467 error ("ambiguous overload for %<operator%s%> in %<%E%s%>",
3468 opname, arg1, opname);
3470 error ("no match for %<operator%s%> in %<%E%s%>",
3471 opname, arg1, opname);
3476 error ("ambiguous overload for %<operator[]%> in %<%E[%E]%>",
3479 error ("no match for %<operator[]%> in %<%E[%E]%>",
3486 error ("ambiguous overload for %qs in %<%s %E%>",
3487 opname, opname, arg1);
3489 error ("no match for %qs in %<%s %E%>",
3490 opname, opname, arg1);
3496 error ("ambiguous overload for %<operator%s%> in %<%E %s %E%>",
3497 opname, arg1, opname, arg2);
3499 error ("no match for %<operator%s%> in %<%E %s %E%>",
3500 opname, arg1, opname, arg2);
3503 error ("ambiguous overload for %<operator%s%> in %<%s%E%>",
3504 opname, opname, arg1);
3506 error ("no match for %<operator%s%> in %<%s%E%>",
3507 opname, opname, arg1);
3512 /* Return the implicit conversion sequence that could be used to
3513 convert E1 to E2 in [expr.cond]. */
3516 conditional_conversion (tree e1, tree e2)
3518 tree t1 = non_reference (TREE_TYPE (e1));
3519 tree t2 = non_reference (TREE_TYPE (e2));
3525 If E2 is an lvalue: E1 can be converted to match E2 if E1 can be
3526 implicitly converted (clause _conv_) to the type "reference to
3527 T2", subject to the constraint that in the conversion the
3528 reference must bind directly (_dcl.init.ref_) to E1. */
3529 if (real_lvalue_p (e2))