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,
5 Free Software Foundation, Inc.
6 Contributed by Michael Tiemann (tiemann@cygnus.com) and
7 modified by Brendan Kehoe (brendan@cygnus.com).
9 This file is part of GCC.
11 GCC is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 3, or (at your option)
16 GCC is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with GCC; see the file COPYING3. If not see
23 <http://www.gnu.org/licenses/>. */
26 /* High-level class interface. */
30 #include "coretypes.h"
37 #include "diagnostic-core.h"
41 #include "langhooks.h"
42 #include "c-family/c-objc.h"
45 /* The various kinds of conversion. */
47 typedef enum conversion_kind {
63 /* The rank of the conversion. Order of the enumerals matters; better
64 conversions should come earlier in the list. */
66 typedef enum conversion_rank {
77 /* An implicit conversion sequence, in the sense of [over.best.ics].
78 The first conversion to be performed is at the end of the chain.
79 That conversion is always a cr_identity conversion. */
81 typedef struct conversion conversion;
83 /* The kind of conversion represented by this step. */
85 /* The rank of this conversion. */
87 BOOL_BITFIELD user_conv_p : 1;
88 BOOL_BITFIELD ellipsis_p : 1;
89 BOOL_BITFIELD this_p : 1;
90 /* True if this conversion would be permitted with a bending of
91 language standards, e.g. disregarding pointer qualifiers or
92 converting integers to pointers. */
93 BOOL_BITFIELD bad_p : 1;
94 /* If KIND is ck_ref_bind ck_base_conv, true to indicate that a
95 temporary should be created to hold the result of the
97 BOOL_BITFIELD need_temporary_p : 1;
98 /* If KIND is ck_ptr or ck_pmem, true to indicate that a conversion
99 from a pointer-to-derived to pointer-to-base is being performed. */
100 BOOL_BITFIELD base_p : 1;
101 /* If KIND is ck_ref_bind, true when either an lvalue reference is
102 being bound to an lvalue expression or an rvalue reference is
103 being bound to an rvalue expression. If KIND is ck_rvalue,
104 true when we should treat an lvalue as an rvalue (12.8p33). If
105 KIND is ck_base, always false. */
106 BOOL_BITFIELD rvaluedness_matches_p: 1;
107 BOOL_BITFIELD check_narrowing: 1;
108 /* The type of the expression resulting from the conversion. */
111 /* The next conversion in the chain. Since the conversions are
112 arranged from outermost to innermost, the NEXT conversion will
113 actually be performed before this conversion. This variant is
114 used only when KIND is neither ck_identity nor ck_ambig. */
116 /* The expression at the beginning of the conversion chain. This
117 variant is used only if KIND is ck_identity or ck_ambig. */
119 /* The array of conversions for an initializer_list. */
122 /* The function candidate corresponding to this conversion
123 sequence. This field is only used if KIND is ck_user. */
124 struct z_candidate *cand;
127 #define CONVERSION_RANK(NODE) \
128 ((NODE)->bad_p ? cr_bad \
129 : (NODE)->ellipsis_p ? cr_ellipsis \
130 : (NODE)->user_conv_p ? cr_user \
133 #define BAD_CONVERSION_RANK(NODE) \
134 ((NODE)->ellipsis_p ? cr_ellipsis \
135 : (NODE)->user_conv_p ? cr_user \
138 static struct obstack conversion_obstack;
139 static bool conversion_obstack_initialized;
140 struct rejection_reason;
142 static struct z_candidate * tourney (struct z_candidate *);
143 static int equal_functions (tree, tree);
144 static int joust (struct z_candidate *, struct z_candidate *, bool);
145 static int compare_ics (conversion *, conversion *);
146 static tree build_over_call (struct z_candidate *, int, tsubst_flags_t);
147 static tree build_java_interface_fn_ref (tree, tree);
148 #define convert_like(CONV, EXPR, COMPLAIN) \
149 convert_like_real ((CONV), (EXPR), NULL_TREE, 0, 0, \
150 /*issue_conversion_warnings=*/true, \
151 /*c_cast_p=*/false, (COMPLAIN))
152 #define convert_like_with_context(CONV, EXPR, FN, ARGNO, COMPLAIN ) \
153 convert_like_real ((CONV), (EXPR), (FN), (ARGNO), 0, \
154 /*issue_conversion_warnings=*/true, \
155 /*c_cast_p=*/false, (COMPLAIN))
156 static tree convert_like_real (conversion *, tree, tree, int, int, bool,
157 bool, tsubst_flags_t);
158 static void op_error (enum tree_code, enum tree_code, tree, tree,
160 static struct z_candidate *build_user_type_conversion_1 (tree, tree, int);
161 static void print_z_candidate (const char *, struct z_candidate *);
162 static void print_z_candidates (location_t, struct z_candidate *);
163 static tree build_this (tree);
164 static struct z_candidate *splice_viable (struct z_candidate *, bool, bool *);
165 static bool any_strictly_viable (struct z_candidate *);
166 static struct z_candidate *add_template_candidate
167 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
168 tree, tree, tree, int, unification_kind_t);
169 static struct z_candidate *add_template_candidate_real
170 (struct z_candidate **, tree, tree, tree, tree, const VEC(tree,gc) *,
171 tree, tree, tree, int, tree, unification_kind_t);
172 static struct z_candidate *add_template_conv_candidate
173 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
175 static void add_builtin_candidates
176 (struct z_candidate **, enum tree_code, enum tree_code,
178 static void add_builtin_candidate
179 (struct z_candidate **, enum tree_code, enum tree_code,
180 tree, tree, tree, tree *, tree *, int);
181 static bool is_complete (tree);
182 static void build_builtin_candidate
183 (struct z_candidate **, tree, tree, tree, tree *, tree *,
185 static struct z_candidate *add_conv_candidate
186 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
188 static struct z_candidate *add_function_candidate
189 (struct z_candidate **, tree, tree, tree, const VEC(tree,gc) *, tree,
191 static conversion *implicit_conversion (tree, tree, tree, bool, int);
192 static conversion *standard_conversion (tree, tree, tree, bool, int);
193 static conversion *reference_binding (tree, tree, tree, bool, int);
194 static conversion *build_conv (conversion_kind, tree, conversion *);
195 static conversion *build_list_conv (tree, tree, int);
196 static bool is_subseq (conversion *, conversion *);
197 static conversion *maybe_handle_ref_bind (conversion **);
198 static void maybe_handle_implicit_object (conversion **);
199 static struct z_candidate *add_candidate
200 (struct z_candidate **, tree, tree, const VEC(tree,gc) *, size_t,
201 conversion **, tree, tree, int, struct rejection_reason *);
202 static tree source_type (conversion *);
203 static void add_warning (struct z_candidate *, struct z_candidate *);
204 static bool reference_compatible_p (tree, tree);
205 static conversion *direct_reference_binding (tree, conversion *);
206 static bool promoted_arithmetic_type_p (tree);
207 static conversion *conditional_conversion (tree, tree);
208 static char *name_as_c_string (tree, tree, bool *);
209 static tree prep_operand (tree);
210 static void add_candidates (tree, tree, const VEC(tree,gc) *, tree, tree, bool,
211 tree, tree, int, struct z_candidate **);
212 static conversion *merge_conversion_sequences (conversion *, conversion *);
213 static bool magic_varargs_p (tree);
214 static tree build_temp (tree, tree, int, diagnostic_t *, tsubst_flags_t);
216 /* Returns nonzero iff the destructor name specified in NAME matches BASETYPE.
217 NAME can take many forms... */
220 check_dtor_name (tree basetype, tree name)
222 /* Just accept something we've already complained about. */
223 if (name == error_mark_node)
226 if (TREE_CODE (name) == TYPE_DECL)
227 name = TREE_TYPE (name);
228 else if (TYPE_P (name))
230 else if (TREE_CODE (name) == IDENTIFIER_NODE)
232 if ((MAYBE_CLASS_TYPE_P (basetype)
233 && name == constructor_name (basetype))
234 || (TREE_CODE (basetype) == ENUMERAL_TYPE
235 && name == TYPE_IDENTIFIER (basetype)))
238 name = get_type_value (name);
244 template <class T> struct S { ~S(); };
248 NAME will be a class template. */
249 gcc_assert (DECL_CLASS_TEMPLATE_P (name));
253 if (!name || name == error_mark_node)
255 return same_type_p (TYPE_MAIN_VARIANT (basetype), TYPE_MAIN_VARIANT (name));
258 /* We want the address of a function or method. We avoid creating a
259 pointer-to-member function. */
262 build_addr_func (tree function)
264 tree type = TREE_TYPE (function);
266 /* We have to do these by hand to avoid real pointer to member
268 if (TREE_CODE (type) == METHOD_TYPE)
270 if (TREE_CODE (function) == OFFSET_REF)
272 tree object = build_address (TREE_OPERAND (function, 0));
273 return get_member_function_from_ptrfunc (&object,
274 TREE_OPERAND (function, 1));
276 function = build_address (function);
279 function = decay_conversion (function);
284 /* Build a CALL_EXPR, we can handle FUNCTION_TYPEs, METHOD_TYPEs, or
285 POINTER_TYPE to those. Note, pointer to member function types
286 (TYPE_PTRMEMFUNC_P) must be handled by our callers. There are
287 two variants. build_call_a is the primitive taking an array of
288 arguments, while build_call_n is a wrapper that handles varargs. */
291 build_call_n (tree function, int n, ...)
294 return build_call_a (function, 0, NULL);
297 tree *argarray = XALLOCAVEC (tree, n);
302 for (i = 0; i < n; i++)
303 argarray[i] = va_arg (ap, tree);
305 return build_call_a (function, n, argarray);
310 build_call_a (tree function, int n, tree *argarray)
312 int is_constructor = 0;
319 function = build_addr_func (function);
321 gcc_assert (TYPE_PTR_P (TREE_TYPE (function)));
322 fntype = TREE_TYPE (TREE_TYPE (function));
323 gcc_assert (TREE_CODE (fntype) == FUNCTION_TYPE
324 || TREE_CODE (fntype) == METHOD_TYPE);
325 result_type = TREE_TYPE (fntype);
326 /* An rvalue has no cv-qualifiers. */
327 if (SCALAR_TYPE_P (result_type) || VOID_TYPE_P (result_type))
328 result_type = cv_unqualified (result_type);
330 if (TREE_CODE (function) == ADDR_EXPR
331 && TREE_CODE (TREE_OPERAND (function, 0)) == FUNCTION_DECL)
333 decl = TREE_OPERAND (function, 0);
334 if (!TREE_USED (decl))
336 /* We invoke build_call directly for several library
337 functions. These may have been declared normally if
338 we're building libgcc, so we can't just check
340 gcc_assert (DECL_ARTIFICIAL (decl)
341 || !strncmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
349 /* We check both the decl and the type; a function may be known not to
350 throw without being declared throw(). */
351 nothrow = ((decl && TREE_NOTHROW (decl))
352 || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
354 if (!nothrow && at_function_scope_p () && cfun && cp_function_chain)
355 cp_function_chain->can_throw = 1;
357 if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain)
358 current_function_returns_abnormally = 1;
360 if (decl && TREE_DEPRECATED (decl))
361 warn_deprecated_use (decl, NULL_TREE);
362 require_complete_eh_spec_types (fntype, decl);
364 if (decl && DECL_CONSTRUCTOR_P (decl))
367 /* Don't pass empty class objects by value. This is useful
368 for tags in STL, which are used to control overload resolution.
369 We don't need to handle other cases of copying empty classes. */
370 if (! decl || ! DECL_BUILT_IN (decl))
371 for (i = 0; i < n; i++)
372 if (is_empty_class (TREE_TYPE (argarray[i]))
373 && ! TREE_ADDRESSABLE (TREE_TYPE (argarray[i])))
375 tree t = build0 (EMPTY_CLASS_EXPR, TREE_TYPE (argarray[i]));
376 argarray[i] = build2 (COMPOUND_EXPR, TREE_TYPE (t),
380 function = build_call_array_loc (input_location,
381 result_type, function, n, argarray);
382 TREE_HAS_CONSTRUCTOR (function) = is_constructor;
383 TREE_NOTHROW (function) = nothrow;
388 /* Build something of the form ptr->method (args)
389 or object.method (args). This can also build
390 calls to constructors, and find friends.
392 Member functions always take their class variable
395 INSTANCE is a class instance.
397 NAME is the name of the method desired, usually an IDENTIFIER_NODE.
399 PARMS help to figure out what that NAME really refers to.
401 BASETYPE_PATH, if non-NULL, contains a chain from the type of INSTANCE
402 down to the real instance type to use for access checking. We need this
403 information to get protected accesses correct.
405 FLAGS is the logical disjunction of zero or more LOOKUP_
406 flags. See cp-tree.h for more info.
408 If this is all OK, calls build_function_call with the resolved
411 This function must also handle being called to perform
412 initialization, promotion/coercion of arguments, and
413 instantiation of default parameters.
415 Note that NAME may refer to an instance variable name. If
416 `operator()()' is defined for the type of that field, then we return
419 /* New overloading code. */
421 typedef struct z_candidate z_candidate;
423 typedef struct candidate_warning candidate_warning;
424 struct candidate_warning {
426 candidate_warning *next;
429 /* Information for providing diagnostics about why overloading failed. */
431 enum rejection_reason_code {
434 rr_explicit_conversion,
435 rr_template_conversion,
437 rr_bad_arg_conversion,
438 rr_template_unification,
439 rr_template_instantiation,
443 struct conversion_info {
444 /* The index of the argument, 0-based. */
446 /* The type of the actual argument. */
448 /* The type of the formal argument. */
452 struct rejection_reason {
453 enum rejection_reason_code code;
455 /* Information about an arity mismatch. */
457 /* The expected number of arguments. */
459 /* The actual number of arguments in the call. */
461 /* Whether the call was a varargs call. */
464 /* Information about an argument conversion mismatch. */
465 struct conversion_info conversion;
466 /* Same, but for bad argument conversions. */
467 struct conversion_info bad_conversion;
468 /* Information about template unification failures. These are the
469 parameters passed to fn_type_unification. */
477 unification_kind_t strict;
479 } template_unification;
480 /* Information about template instantiation failures. These are the
481 parameters passed to instantiate_template. */
485 } template_instantiation;
490 /* The FUNCTION_DECL that will be called if this candidate is
491 selected by overload resolution. */
493 /* If not NULL_TREE, the first argument to use when calling this
496 /* The rest of the arguments to use when calling this function. If
497 there are no further arguments this may be NULL or it may be an
499 const VEC(tree,gc) *args;
500 /* The implicit conversion sequences for each of the arguments to
503 /* The number of implicit conversion sequences. */
505 /* If FN is a user-defined conversion, the standard conversion
506 sequence from the type returned by FN to the desired destination
508 conversion *second_conv;
510 struct rejection_reason *reason;
511 /* If FN is a member function, the binfo indicating the path used to
512 qualify the name of FN at the call site. This path is used to
513 determine whether or not FN is accessible if it is selected by
514 overload resolution. The DECL_CONTEXT of FN will always be a
515 (possibly improper) base of this binfo. */
517 /* If FN is a non-static member function, the binfo indicating the
518 subobject to which the `this' pointer should be converted if FN
519 is selected by overload resolution. The type pointed to the by
520 the `this' pointer must correspond to the most derived class
521 indicated by the CONVERSION_PATH. */
522 tree conversion_path;
525 candidate_warning *warnings;
529 /* Returns true iff T is a null pointer constant in the sense of
533 null_ptr_cst_p (tree t)
537 A null pointer constant is an integral constant expression
538 (_expr.const_) rvalue of integer type that evaluates to zero or
539 an rvalue of type std::nullptr_t. */
540 if (NULLPTR_TYPE_P (TREE_TYPE (t)))
542 if (CP_INTEGRAL_TYPE_P (TREE_TYPE (t)))
544 /* Core issue 903 says only literal 0 is a null pointer constant. */
545 if (cxx_dialect < cxx0x)
547 t = integral_constant_value (t);
550 if (integer_zerop (t) && !TREE_OVERFLOW (t))
556 /* Returns true iff T is a null member pointer value (4.11). */
559 null_member_pointer_value_p (tree t)
561 tree type = TREE_TYPE (t);
564 else if (TYPE_PTRMEMFUNC_P (type))
565 return (TREE_CODE (t) == CONSTRUCTOR
566 && integer_zerop (CONSTRUCTOR_ELT (t, 0)->value));
567 else if (TYPE_PTRMEM_P (type))
568 return integer_all_onesp (t);
573 /* Returns nonzero if PARMLIST consists of only default parms,
574 ellipsis, and/or undeduced parameter packs. */
577 sufficient_parms_p (const_tree parmlist)
579 for (; parmlist && parmlist != void_list_node;
580 parmlist = TREE_CHAIN (parmlist))
581 if (!TREE_PURPOSE (parmlist)
582 && !PACK_EXPANSION_P (TREE_VALUE (parmlist)))
587 /* Allocate N bytes of memory from the conversion obstack. The memory
588 is zeroed before being returned. */
591 conversion_obstack_alloc (size_t n)
594 if (!conversion_obstack_initialized)
596 gcc_obstack_init (&conversion_obstack);
597 conversion_obstack_initialized = true;
599 p = obstack_alloc (&conversion_obstack, n);
604 /* Allocate rejection reasons. */
606 static struct rejection_reason *
607 alloc_rejection (enum rejection_reason_code code)
609 struct rejection_reason *p;
610 p = (struct rejection_reason *) conversion_obstack_alloc (sizeof *p);
615 static struct rejection_reason *
616 arity_rejection (tree first_arg, int expected, int actual)
618 struct rejection_reason *r = alloc_rejection (rr_arity);
619 int adjust = first_arg != NULL_TREE;
620 r->u.arity.expected = expected - adjust;
621 r->u.arity.actual = actual - adjust;
625 static struct rejection_reason *
626 arg_conversion_rejection (tree first_arg, int n_arg, tree from, tree to)
628 struct rejection_reason *r = alloc_rejection (rr_arg_conversion);
629 int adjust = first_arg != NULL_TREE;
630 r->u.conversion.n_arg = n_arg - adjust;
631 r->u.conversion.from_type = from;
632 r->u.conversion.to_type = to;
636 static struct rejection_reason *
637 bad_arg_conversion_rejection (tree first_arg, int n_arg, tree from, tree to)
639 struct rejection_reason *r = alloc_rejection (rr_bad_arg_conversion);
640 int adjust = first_arg != NULL_TREE;
641 r->u.bad_conversion.n_arg = n_arg - adjust;
642 r->u.bad_conversion.from_type = from;
643 r->u.bad_conversion.to_type = to;
647 static struct rejection_reason *
648 explicit_conversion_rejection (tree from, tree to)
650 struct rejection_reason *r = alloc_rejection (rr_explicit_conversion);
651 r->u.conversion.n_arg = 0;
652 r->u.conversion.from_type = from;
653 r->u.conversion.to_type = to;
657 static struct rejection_reason *
658 template_conversion_rejection (tree from, tree to)
660 struct rejection_reason *r = alloc_rejection (rr_template_conversion);
661 r->u.conversion.n_arg = 0;
662 r->u.conversion.from_type = from;
663 r->u.conversion.to_type = to;
667 static struct rejection_reason *
668 template_unification_rejection (tree tmpl, tree explicit_targs, tree targs,
669 const tree *args, unsigned int nargs,
670 tree return_type, unification_kind_t strict,
673 size_t args_n_bytes = sizeof (*args) * nargs;
674 tree *args1 = (tree *) conversion_obstack_alloc (args_n_bytes);
675 struct rejection_reason *r = alloc_rejection (rr_template_unification);
676 r->u.template_unification.tmpl = tmpl;
677 r->u.template_unification.explicit_targs = explicit_targs;
678 r->u.template_unification.targs = targs;
679 /* Copy args to our own storage. */
680 memcpy (args1, args, args_n_bytes);
681 r->u.template_unification.args = args1;
682 r->u.template_unification.nargs = nargs;
683 r->u.template_unification.return_type = return_type;
684 r->u.template_unification.strict = strict;
685 r->u.template_unification.flags = flags;
689 static struct rejection_reason *
690 template_unification_error_rejection (void)
692 return alloc_rejection (rr_template_unification);
695 static struct rejection_reason *
696 template_instantiation_rejection (tree tmpl, tree targs)
698 struct rejection_reason *r = alloc_rejection (rr_template_instantiation);
699 r->u.template_instantiation.tmpl = tmpl;
700 r->u.template_instantiation.targs = targs;
704 static struct rejection_reason *
705 invalid_copy_with_fn_template_rejection (void)
707 struct rejection_reason *r = alloc_rejection (rr_invalid_copy);
711 /* Dynamically allocate a conversion. */
714 alloc_conversion (conversion_kind kind)
717 c = (conversion *) conversion_obstack_alloc (sizeof (conversion));
722 #ifdef ENABLE_CHECKING
724 /* Make sure that all memory on the conversion obstack has been
728 validate_conversion_obstack (void)
730 if (conversion_obstack_initialized)
731 gcc_assert ((obstack_next_free (&conversion_obstack)
732 == obstack_base (&conversion_obstack)));
735 #endif /* ENABLE_CHECKING */
737 /* Dynamically allocate an array of N conversions. */
740 alloc_conversions (size_t n)
742 return (conversion **) conversion_obstack_alloc (n * sizeof (conversion *));
746 build_conv (conversion_kind code, tree type, conversion *from)
749 conversion_rank rank = CONVERSION_RANK (from);
751 /* Note that the caller is responsible for filling in t->cand for
752 user-defined conversions. */
753 t = alloc_conversion (code);
776 t->user_conv_p = (code == ck_user || from->user_conv_p);
777 t->bad_p = from->bad_p;
782 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, a
783 specialization of std::initializer_list<T>, if such a conversion is
787 build_list_conv (tree type, tree ctor, int flags)
789 tree elttype = TREE_VEC_ELT (CLASSTYPE_TI_ARGS (type), 0);
790 unsigned len = CONSTRUCTOR_NELTS (ctor);
791 conversion **subconvs = alloc_conversions (len);
796 /* Within a list-initialization we can have more user-defined
798 flags &= ~LOOKUP_NO_CONVERSION;
799 /* But no narrowing conversions. */
800 flags |= LOOKUP_NO_NARROWING;
802 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
805 = implicit_conversion (elttype, TREE_TYPE (val), val,
813 t = alloc_conversion (ck_list);
815 t->u.list = subconvs;
818 for (i = 0; i < len; ++i)
820 conversion *sub = subconvs[i];
821 if (sub->rank > t->rank)
823 if (sub->user_conv_p)
824 t->user_conv_p = true;
832 /* Subroutine of build_aggr_conv: check whether CTOR, a braced-init-list,
833 is a valid aggregate initializer for array type ATYPE. */
836 can_convert_array (tree atype, tree ctor, int flags)
839 tree elttype = TREE_TYPE (atype);
840 for (i = 0; i < CONSTRUCTOR_NELTS (ctor); ++i)
842 tree val = CONSTRUCTOR_ELT (ctor, i)->value;
844 if (TREE_CODE (elttype) == ARRAY_TYPE
845 && TREE_CODE (val) == CONSTRUCTOR)
846 ok = can_convert_array (elttype, val, flags);
848 ok = can_convert_arg (elttype, TREE_TYPE (val), val, flags);
855 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, an
856 aggregate class, if such a conversion is possible. */
859 build_aggr_conv (tree type, tree ctor, int flags)
861 unsigned HOST_WIDE_INT i = 0;
863 tree field = next_initializable_field (TYPE_FIELDS (type));
864 tree empty_ctor = NULL_TREE;
866 for (; field; field = next_initializable_field (DECL_CHAIN (field)))
868 tree ftype = TREE_TYPE (field);
872 if (i < CONSTRUCTOR_NELTS (ctor))
873 val = CONSTRUCTOR_ELT (ctor, i)->value;
876 if (empty_ctor == NULL_TREE)
877 empty_ctor = build_constructor (init_list_type_node, NULL);
882 if (TREE_CODE (ftype) == ARRAY_TYPE
883 && TREE_CODE (val) == CONSTRUCTOR)
884 ok = can_convert_array (ftype, val, flags);
886 ok = can_convert_arg (ftype, TREE_TYPE (val), val, flags);
891 if (TREE_CODE (type) == UNION_TYPE)
895 if (i < CONSTRUCTOR_NELTS (ctor))
898 c = alloc_conversion (ck_aggr);
901 c->user_conv_p = true;
906 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, an
907 array type, if such a conversion is possible. */
910 build_array_conv (tree type, tree ctor, int flags)
913 unsigned HOST_WIDE_INT len = CONSTRUCTOR_NELTS (ctor);
914 tree elttype = TREE_TYPE (type);
919 enum conversion_rank rank = cr_exact;
921 if (TYPE_DOMAIN (type))
923 unsigned HOST_WIDE_INT alen = tree_low_cst (array_type_nelts_top (type), 1);
928 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
931 = implicit_conversion (elttype, TREE_TYPE (val), val,
936 if (sub->rank > rank)
938 if (sub->user_conv_p)
944 c = alloc_conversion (ck_aggr);
947 c->user_conv_p = user;
953 /* Represent a conversion from CTOR, a braced-init-list, to TYPE, a
954 complex type, if such a conversion is possible. */
957 build_complex_conv (tree type, tree ctor, int flags)
960 unsigned HOST_WIDE_INT len = CONSTRUCTOR_NELTS (ctor);
961 tree elttype = TREE_TYPE (type);
966 enum conversion_rank rank = cr_exact;
971 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (ctor), i, val)
974 = implicit_conversion (elttype, TREE_TYPE (val), val,
979 if (sub->rank > rank)
981 if (sub->user_conv_p)
987 c = alloc_conversion (ck_aggr);
990 c->user_conv_p = user;
996 /* Build a representation of the identity conversion from EXPR to
997 itself. The TYPE should match the type of EXPR, if EXPR is non-NULL. */
1000 build_identity_conv (tree type, tree expr)
1004 c = alloc_conversion (ck_identity);
1011 /* Converting from EXPR to TYPE was ambiguous in the sense that there
1012 were multiple user-defined conversions to accomplish the job.
1013 Build a conversion that indicates that ambiguity. */
1016 build_ambiguous_conv (tree type, tree expr)
1020 c = alloc_conversion (ck_ambig);
1028 strip_top_quals (tree t)
1030 if (TREE_CODE (t) == ARRAY_TYPE)
1032 return cp_build_qualified_type (t, 0);
1035 /* Returns the standard conversion path (see [conv]) from type FROM to type
1036 TO, if any. For proper handling of null pointer constants, you must
1037 also pass the expression EXPR to convert from. If C_CAST_P is true,
1038 this conversion is coming from a C-style cast. */
1041 standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
1044 enum tree_code fcode, tcode;
1046 bool fromref = false;
1049 to = non_reference (to);
1050 if (TREE_CODE (from) == REFERENCE_TYPE)
1053 from = TREE_TYPE (from);
1056 to = strip_top_quals (to);
1057 from = strip_top_quals (from);
1059 if ((TYPE_PTRFN_P (to) || TYPE_PTRMEMFUNC_P (to))
1060 && expr && type_unknown_p (expr))
1062 tsubst_flags_t tflags = tf_conv;
1063 if (!(flags & LOOKUP_PROTECT))
1064 tflags |= tf_no_access_control;
1065 expr = instantiate_type (to, expr, tflags);
1066 if (expr == error_mark_node)
1068 from = TREE_TYPE (expr);
1071 fcode = TREE_CODE (from);
1072 tcode = TREE_CODE (to);
1074 conv = build_identity_conv (from, expr);
1075 if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
1077 from = type_decays_to (from);
1078 fcode = TREE_CODE (from);
1079 conv = build_conv (ck_lvalue, from, conv);
1081 else if (fromref || (expr && lvalue_p (expr)))
1086 bitfield_type = is_bitfield_expr_with_lowered_type (expr);
1089 from = strip_top_quals (bitfield_type);
1090 fcode = TREE_CODE (from);
1093 conv = build_conv (ck_rvalue, from, conv);
1094 if (flags & LOOKUP_PREFER_RVALUE)
1095 conv->rvaluedness_matches_p = true;
1098 /* Allow conversion between `__complex__' data types. */
1099 if (tcode == COMPLEX_TYPE && fcode == COMPLEX_TYPE)
1101 /* The standard conversion sequence to convert FROM to TO is
1102 the standard conversion sequence to perform componentwise
1104 conversion *part_conv = standard_conversion
1105 (TREE_TYPE (to), TREE_TYPE (from), NULL_TREE, c_cast_p, flags);
1109 conv = build_conv (part_conv->kind, to, conv);
1110 conv->rank = part_conv->rank;
1118 if (same_type_p (from, to))
1120 if (CLASS_TYPE_P (to) && conv->kind == ck_rvalue)
1121 conv->type = qualified_to;
1126 A null pointer constant can be converted to a pointer type; ... A
1127 null pointer constant of integral type can be converted to an
1128 rvalue of type std::nullptr_t. */
1129 if ((tcode == POINTER_TYPE || TYPE_PTR_TO_MEMBER_P (to)
1130 || NULLPTR_TYPE_P (to))
1131 && expr && null_ptr_cst_p (expr))
1132 conv = build_conv (ck_std, to, conv);
1133 else if ((tcode == INTEGER_TYPE && fcode == POINTER_TYPE)
1134 || (tcode == POINTER_TYPE && fcode == INTEGER_TYPE))
1136 /* For backwards brain damage compatibility, allow interconversion of
1137 pointers and integers with a pedwarn. */
1138 conv = build_conv (ck_std, to, conv);
1141 else if (UNSCOPED_ENUM_P (to) && fcode == INTEGER_TYPE)
1143 /* For backwards brain damage compatibility, allow interconversion of
1144 enums and integers with a pedwarn. */
1145 conv = build_conv (ck_std, to, conv);
1148 else if ((tcode == POINTER_TYPE && fcode == POINTER_TYPE)
1149 || (TYPE_PTRMEM_P (to) && TYPE_PTRMEM_P (from)))
1154 if (tcode == POINTER_TYPE
1155 && same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (from),
1158 else if (VOID_TYPE_P (TREE_TYPE (to))
1159 && !TYPE_PTRMEM_P (from)
1160 && TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE)
1162 tree nfrom = TREE_TYPE (from);
1163 from = build_pointer_type
1164 (cp_build_qualified_type (void_type_node,
1165 cp_type_quals (nfrom)));
1166 conv = build_conv (ck_ptr, from, conv);
1168 else if (TYPE_PTRMEM_P (from))
1170 tree fbase = TYPE_PTRMEM_CLASS_TYPE (from);
1171 tree tbase = TYPE_PTRMEM_CLASS_TYPE (to);
1173 if (DERIVED_FROM_P (fbase, tbase)
1174 && (same_type_ignoring_top_level_qualifiers_p
1175 (TYPE_PTRMEM_POINTED_TO_TYPE (from),
1176 TYPE_PTRMEM_POINTED_TO_TYPE (to))))
1178 from = build_ptrmem_type (tbase,
1179 TYPE_PTRMEM_POINTED_TO_TYPE (from));
1180 conv = build_conv (ck_pmem, from, conv);
1182 else if (!same_type_p (fbase, tbase))
1185 else if (CLASS_TYPE_P (TREE_TYPE (from))
1186 && CLASS_TYPE_P (TREE_TYPE (to))
1189 An rvalue of type "pointer to cv D," where D is a
1190 class type, can be converted to an rvalue of type
1191 "pointer to cv B," where B is a base class (clause
1192 _class.derived_) of D. If B is an inaccessible
1193 (clause _class.access_) or ambiguous
1194 (_class.member.lookup_) base class of D, a program
1195 that necessitates this conversion is ill-formed.
1196 Therefore, we use DERIVED_FROM_P, and do not check
1197 access or uniqueness. */
1198 && DERIVED_FROM_P (TREE_TYPE (to), TREE_TYPE (from)))
1201 cp_build_qualified_type (TREE_TYPE (to),
1202 cp_type_quals (TREE_TYPE (from)));
1203 from = build_pointer_type (from);
1204 conv = build_conv (ck_ptr, from, conv);
1205 conv->base_p = true;
1208 if (tcode == POINTER_TYPE)
1210 to_pointee = TREE_TYPE (to);
1211 from_pointee = TREE_TYPE (from);
1215 to_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (to);
1216 from_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (from);
1219 if (same_type_p (from, to))
1221 else if (c_cast_p && comp_ptr_ttypes_const (to, from))
1222 /* In a C-style cast, we ignore CV-qualification because we
1223 are allowed to perform a static_cast followed by a
1225 conv = build_conv (ck_qual, to, conv);
1226 else if (!c_cast_p && comp_ptr_ttypes (to_pointee, from_pointee))
1227 conv = build_conv (ck_qual, to, conv);
1228 else if (expr && string_conv_p (to, expr, 0))
1229 /* converting from string constant to char *. */
1230 conv = build_conv (ck_qual, to, conv);
1231 /* Allow conversions among compatible ObjC pointer types (base
1232 conversions have been already handled above). */
1233 else if (c_dialect_objc ()
1234 && objc_compare_types (to, from, -4, NULL_TREE))
1235 conv = build_conv (ck_ptr, to, conv);
1236 else if (ptr_reasonably_similar (to_pointee, from_pointee))
1238 conv = build_conv (ck_ptr, to, conv);
1246 else if (TYPE_PTRMEMFUNC_P (to) && TYPE_PTRMEMFUNC_P (from))
1248 tree fromfn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (from));
1249 tree tofn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (to));
1250 tree fbase = class_of_this_parm (fromfn);
1251 tree tbase = class_of_this_parm (tofn);
1253 if (!DERIVED_FROM_P (fbase, tbase)
1254 || !same_type_p (TREE_TYPE (fromfn), TREE_TYPE (tofn))
1255 || !compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)),
1256 TREE_CHAIN (TYPE_ARG_TYPES (tofn)))
1257 || cp_type_quals (fbase) != cp_type_quals (tbase))
1260 from = build_memfn_type (fromfn, tbase, cp_type_quals (tbase));
1261 from = build_ptrmemfunc_type (build_pointer_type (from));
1262 conv = build_conv (ck_pmem, from, conv);
1263 conv->base_p = true;
1265 else if (tcode == BOOLEAN_TYPE)
1269 An rvalue of arithmetic, unscoped enumeration, pointer, or
1270 pointer to member type can be converted to an rvalue of type
1271 bool. ... An rvalue of type std::nullptr_t can be converted
1272 to an rvalue of type bool; */
1273 if (ARITHMETIC_TYPE_P (from)
1274 || UNSCOPED_ENUM_P (from)
1275 || fcode == POINTER_TYPE
1276 || TYPE_PTR_TO_MEMBER_P (from)
1277 || NULLPTR_TYPE_P (from))
1279 conv = build_conv (ck_std, to, conv);
1280 if (fcode == POINTER_TYPE
1281 || TYPE_PTRMEM_P (from)
1282 || (TYPE_PTRMEMFUNC_P (from)
1283 && conv->rank < cr_pbool)
1284 || NULLPTR_TYPE_P (from))
1285 conv->rank = cr_pbool;
1291 /* We don't check for ENUMERAL_TYPE here because there are no standard
1292 conversions to enum type. */
1293 /* As an extension, allow conversion to complex type. */
1294 else if (ARITHMETIC_TYPE_P (to))
1296 if (! (INTEGRAL_CODE_P (fcode) || fcode == REAL_TYPE)
1297 || SCOPED_ENUM_P (from))
1299 conv = build_conv (ck_std, to, conv);
1301 /* Give this a better rank if it's a promotion. */
1302 if (same_type_p (to, type_promotes_to (from))
1303 && conv->u.next->rank <= cr_promotion)
1304 conv->rank = cr_promotion;
1306 else if (fcode == VECTOR_TYPE && tcode == VECTOR_TYPE
1307 && vector_types_convertible_p (from, to, false))
1308 return build_conv (ck_std, to, conv);
1309 else if (MAYBE_CLASS_TYPE_P (to) && MAYBE_CLASS_TYPE_P (from)
1310 && is_properly_derived_from (from, to))
1312 if (conv->kind == ck_rvalue)
1313 conv = conv->u.next;
1314 conv = build_conv (ck_base, to, conv);
1315 /* The derived-to-base conversion indicates the initialization
1316 of a parameter with base type from an object of a derived
1317 type. A temporary object is created to hold the result of
1318 the conversion unless we're binding directly to a reference. */
1319 conv->need_temporary_p = !(flags & LOOKUP_NO_TEMP_BIND);
1324 if (flags & LOOKUP_NO_NARROWING)
1325 conv->check_narrowing = true;
1330 /* Returns nonzero if T1 is reference-related to T2. */
1333 reference_related_p (tree t1, tree t2)
1335 if (t1 == error_mark_node || t2 == error_mark_node)
1338 t1 = TYPE_MAIN_VARIANT (t1);
1339 t2 = TYPE_MAIN_VARIANT (t2);
1343 Given types "cv1 T1" and "cv2 T2," "cv1 T1" is reference-related
1344 to "cv2 T2" if T1 is the same type as T2, or T1 is a base class
1346 return (same_type_p (t1, t2)
1347 || (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
1348 && DERIVED_FROM_P (t1, t2)));
1351 /* Returns nonzero if T1 is reference-compatible with T2. */
1354 reference_compatible_p (tree t1, tree t2)
1358 "cv1 T1" is reference compatible with "cv2 T2" if T1 is
1359 reference-related to T2 and cv1 is the same cv-qualification as,
1360 or greater cv-qualification than, cv2. */
1361 return (reference_related_p (t1, t2)
1362 && at_least_as_qualified_p (t1, t2));
1365 /* A reference of the indicated TYPE is being bound directly to the
1366 expression represented by the implicit conversion sequence CONV.
1367 Return a conversion sequence for this binding. */
1370 direct_reference_binding (tree type, conversion *conv)
1374 gcc_assert (TREE_CODE (type) == REFERENCE_TYPE);
1375 gcc_assert (TREE_CODE (conv->type) != REFERENCE_TYPE);
1377 t = TREE_TYPE (type);
1381 When a parameter of reference type binds directly
1382 (_dcl.init.ref_) to an argument expression, the implicit
1383 conversion sequence is the identity conversion, unless the
1384 argument expression has a type that is a derived class of the
1385 parameter type, in which case the implicit conversion sequence is
1386 a derived-to-base Conversion.
1388 If the parameter binds directly to the result of applying a
1389 conversion function to the argument expression, the implicit
1390 conversion sequence is a user-defined conversion sequence
1391 (_over.ics.user_), with the second standard conversion sequence
1392 either an identity conversion or, if the conversion function
1393 returns an entity of a type that is a derived class of the
1394 parameter type, a derived-to-base conversion. */
1395 if (!same_type_ignoring_top_level_qualifiers_p (t, conv->type))
1397 /* Represent the derived-to-base conversion. */
1398 conv = build_conv (ck_base, t, conv);
1399 /* We will actually be binding to the base-class subobject in
1400 the derived class, so we mark this conversion appropriately.
1401 That way, convert_like knows not to generate a temporary. */
1402 conv->need_temporary_p = false;
1404 return build_conv (ck_ref_bind, type, conv);
1407 /* Returns the conversion path from type FROM to reference type TO for
1408 purposes of reference binding. For lvalue binding, either pass a
1409 reference type to FROM or an lvalue expression to EXPR. If the
1410 reference will be bound to a temporary, NEED_TEMPORARY_P is set for
1411 the conversion returned. If C_CAST_P is true, this
1412 conversion is coming from a C-style cast. */
1415 reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
1417 conversion *conv = NULL;
1418 tree to = TREE_TYPE (rto);
1423 cp_lvalue_kind gl_kind;
1426 if (TREE_CODE (to) == FUNCTION_TYPE && expr && type_unknown_p (expr))
1428 expr = instantiate_type (to, expr, tf_none);
1429 if (expr == error_mark_node)
1431 from = TREE_TYPE (expr);
1434 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1436 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
1437 conv = implicit_conversion (to, from, expr, c_cast_p,
1439 if (!CLASS_TYPE_P (to)
1440 && CONSTRUCTOR_NELTS (expr) == 1)
1442 expr = CONSTRUCTOR_ELT (expr, 0)->value;
1443 if (error_operand_p (expr))
1445 from = TREE_TYPE (expr);
1449 if (TREE_CODE (from) == REFERENCE_TYPE)
1451 from = TREE_TYPE (from);
1452 if (!TYPE_REF_IS_RVALUE (rfrom)
1453 || TREE_CODE (from) == FUNCTION_TYPE)
1454 gl_kind = clk_ordinary;
1456 gl_kind = clk_rvalueref;
1460 gl_kind = lvalue_kind (expr);
1461 if (gl_kind & clk_class)
1462 /* A class prvalue is not a glvalue. */
1467 is_lvalue = gl_kind && !(gl_kind & clk_rvalueref);
1470 if ((gl_kind & clk_bitfield) != 0)
1471 tfrom = unlowered_expr_type (expr);
1473 /* Figure out whether or not the types are reference-related and
1474 reference compatible. We have do do this after stripping
1475 references from FROM. */
1476 related_p = reference_related_p (to, tfrom);
1477 /* If this is a C cast, first convert to an appropriately qualified
1478 type, so that we can later do a const_cast to the desired type. */
1479 if (related_p && c_cast_p
1480 && !at_least_as_qualified_p (to, tfrom))
1481 to = cp_build_qualified_type (to, cp_type_quals (tfrom));
1482 compatible_p = reference_compatible_p (to, tfrom);
1484 /* Directly bind reference when target expression's type is compatible with
1485 the reference and expression is an lvalue. In DR391, the wording in
1486 [8.5.3/5 dcl.init.ref] is changed to also require direct bindings for
1487 const and rvalue references to rvalues of compatible class type.
1488 We should also do direct bindings for non-class xvalues. */
1491 || (((CP_TYPE_CONST_NON_VOLATILE_P (to)
1492 && !(flags & LOOKUP_NO_RVAL_BIND))
1493 || TYPE_REF_IS_RVALUE (rto))
1495 || (!(flags & LOOKUP_NO_TEMP_BIND)
1496 && (CLASS_TYPE_P (from)
1497 || TREE_CODE (from) == ARRAY_TYPE))))))
1501 If the initializer expression
1503 -- is an lvalue (but not an lvalue for a bit-field), and "cv1 T1"
1504 is reference-compatible with "cv2 T2,"
1506 the reference is bound directly to the initializer expression
1510 If the initializer expression is an rvalue, with T2 a class type,
1511 and "cv1 T1" is reference-compatible with "cv2 T2", the reference
1512 is bound to the object represented by the rvalue or to a sub-object
1513 within that object. */
1515 conv = build_identity_conv (tfrom, expr);
1516 conv = direct_reference_binding (rto, conv);
1518 if (flags & LOOKUP_PREFER_RVALUE)
1519 /* The top-level caller requested that we pretend that the lvalue
1520 be treated as an rvalue. */
1521 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1522 else if (TREE_CODE (rfrom) == REFERENCE_TYPE)
1523 /* Handle rvalue reference to function properly. */
1524 conv->rvaluedness_matches_p
1525 = (TYPE_REF_IS_RVALUE (rto) == TYPE_REF_IS_RVALUE (rfrom));
1527 conv->rvaluedness_matches_p
1528 = (TYPE_REF_IS_RVALUE (rto) == !is_lvalue);
1530 if ((gl_kind & clk_bitfield) != 0
1531 || ((gl_kind & clk_packed) != 0 && !TYPE_PACKED (to)))
1532 /* For the purposes of overload resolution, we ignore the fact
1533 this expression is a bitfield or packed field. (In particular,
1534 [over.ics.ref] says specifically that a function with a
1535 non-const reference parameter is viable even if the
1536 argument is a bitfield.)
1538 However, when we actually call the function we must create
1539 a temporary to which to bind the reference. If the
1540 reference is volatile, or isn't const, then we cannot make
1541 a temporary, so we just issue an error when the conversion
1543 conv->need_temporary_p = true;
1545 /* Don't allow binding of lvalues (other than function lvalues) to
1546 rvalue references. */
1547 if (is_lvalue && TYPE_REF_IS_RVALUE (rto)
1548 && TREE_CODE (to) != FUNCTION_TYPE
1549 && !(flags & LOOKUP_PREFER_RVALUE))
1554 /* [class.conv.fct] A conversion function is never used to convert a
1555 (possibly cv-qualified) object to the (possibly cv-qualified) same
1556 object type (or a reference to it), to a (possibly cv-qualified) base
1557 class of that type (or a reference to it).... */
1558 else if (CLASS_TYPE_P (from) && !related_p
1559 && !(flags & LOOKUP_NO_CONVERSION))
1563 If the initializer expression
1565 -- has a class type (i.e., T2 is a class type) can be
1566 implicitly converted to an lvalue of type "cv3 T3," where
1567 "cv1 T1" is reference-compatible with "cv3 T3". (this
1568 conversion is selected by enumerating the applicable
1569 conversion functions (_over.match.ref_) and choosing the
1570 best one through overload resolution. (_over.match_).
1572 the reference is bound to the lvalue result of the conversion
1573 in the second case. */
1574 z_candidate *cand = build_user_type_conversion_1 (rto, expr, flags);
1576 return cand->second_conv;
1579 /* From this point on, we conceptually need temporaries, even if we
1580 elide them. Only the cases above are "direct bindings". */
1581 if (flags & LOOKUP_NO_TEMP_BIND)
1586 When a parameter of reference type is not bound directly to an
1587 argument expression, the conversion sequence is the one required
1588 to convert the argument expression to the underlying type of the
1589 reference according to _over.best.ics_. Conceptually, this
1590 conversion sequence corresponds to copy-initializing a temporary
1591 of the underlying type with the argument expression. Any
1592 difference in top-level cv-qualification is subsumed by the
1593 initialization itself and does not constitute a conversion. */
1597 Otherwise, the reference shall be to a non-volatile const type.
1599 Under C++0x, [8.5.3/5 dcl.init.ref] it may also be an rvalue reference */
1600 if (!CP_TYPE_CONST_NON_VOLATILE_P (to) && !TYPE_REF_IS_RVALUE (rto))
1605 Otherwise, a temporary of type "cv1 T1" is created and
1606 initialized from the initializer expression using the rules for a
1607 non-reference copy initialization. If T1 is reference-related to
1608 T2, cv1 must be the same cv-qualification as, or greater
1609 cv-qualification than, cv2; otherwise, the program is ill-formed. */
1610 if (related_p && !at_least_as_qualified_p (to, from))
1613 /* We're generating a temporary now, but don't bind any more in the
1614 conversion (specifically, don't slice the temporary returned by a
1615 conversion operator). */
1616 flags |= LOOKUP_NO_TEMP_BIND;
1618 /* Core issue 899: When [copy-]initializing a temporary to be bound
1619 to the first parameter of a copy constructor (12.8) called with
1620 a single argument in the context of direct-initialization,
1621 explicit conversion functions are also considered.
1623 So don't set LOOKUP_ONLYCONVERTING in that case. */
1624 if (!(flags & LOOKUP_COPY_PARM))
1625 flags |= LOOKUP_ONLYCONVERTING;
1628 conv = implicit_conversion (to, from, expr, c_cast_p,
1633 conv = build_conv (ck_ref_bind, rto, conv);
1634 /* This reference binding, unlike those above, requires the
1635 creation of a temporary. */
1636 conv->need_temporary_p = true;
1637 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1642 /* Returns the implicit conversion sequence (see [over.ics]) from type
1643 FROM to type TO. The optional expression EXPR may affect the
1644 conversion. FLAGS are the usual overloading flags. If C_CAST_P is
1645 true, this conversion is coming from a C-style cast. */
1648 implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
1653 if (from == error_mark_node || to == error_mark_node
1654 || expr == error_mark_node)
1657 if (TREE_CODE (to) == REFERENCE_TYPE)
1658 conv = reference_binding (to, from, expr, c_cast_p, flags);
1660 conv = standard_conversion (to, from, expr, c_cast_p, flags);
1665 if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
1667 if (is_std_init_list (to))
1668 return build_list_conv (to, expr, flags);
1670 /* As an extension, allow list-initialization of _Complex. */
1671 if (TREE_CODE (to) == COMPLEX_TYPE)
1673 conv = build_complex_conv (to, expr, flags);
1678 /* Allow conversion from an initializer-list with one element to a
1680 if (SCALAR_TYPE_P (to))
1682 int nelts = CONSTRUCTOR_NELTS (expr);
1686 elt = build_value_init (to, tf_none);
1687 else if (nelts == 1)
1688 elt = CONSTRUCTOR_ELT (expr, 0)->value;
1690 elt = error_mark_node;
1692 conv = implicit_conversion (to, TREE_TYPE (elt), elt,
1696 conv->check_narrowing = true;
1697 if (BRACE_ENCLOSED_INITIALIZER_P (elt))
1698 /* Too many levels of braces, i.e. '{{1}}'. */
1703 else if (TREE_CODE (to) == ARRAY_TYPE)
1704 return build_array_conv (to, expr, flags);
1707 if (expr != NULL_TREE
1708 && (MAYBE_CLASS_TYPE_P (from)
1709 || MAYBE_CLASS_TYPE_P (to))
1710 && (flags & LOOKUP_NO_CONVERSION) == 0)
1712 struct z_candidate *cand;
1713 int convflags = (flags & (LOOKUP_NO_TEMP_BIND|LOOKUP_ONLYCONVERTING
1714 |LOOKUP_NO_NARROWING));
1716 if (CLASS_TYPE_P (to)
1717 && BRACE_ENCLOSED_INITIALIZER_P (expr)
1718 && !CLASSTYPE_NON_AGGREGATE (complete_type (to)))
1719 return build_aggr_conv (to, expr, flags);
1721 cand = build_user_type_conversion_1 (to, expr, convflags);
1723 conv = cand->second_conv;
1725 /* We used to try to bind a reference to a temporary here, but that
1726 is now handled after the recursive call to this function at the end
1727 of reference_binding. */
1734 /* Add a new entry to the list of candidates. Used by the add_*_candidate
1735 functions. ARGS will not be changed until a single candidate is
1738 static struct z_candidate *
1739 add_candidate (struct z_candidate **candidates,
1740 tree fn, tree first_arg, const VEC(tree,gc) *args,
1741 size_t num_convs, conversion **convs,
1742 tree access_path, tree conversion_path,
1743 int viable, struct rejection_reason *reason)
1745 struct z_candidate *cand = (struct z_candidate *)
1746 conversion_obstack_alloc (sizeof (struct z_candidate));
1749 cand->first_arg = first_arg;
1751 cand->convs = convs;
1752 cand->num_convs = num_convs;
1753 cand->access_path = access_path;
1754 cand->conversion_path = conversion_path;
1755 cand->viable = viable;
1756 cand->reason = reason;
1757 cand->next = *candidates;
1763 /* Return the number of remaining arguments in the parameter list
1764 beginning with ARG. */
1767 remaining_arguments (tree arg)
1771 for (n = 0; arg != NULL_TREE && arg != void_list_node;
1772 arg = TREE_CHAIN (arg))
1778 /* Create an overload candidate for the function or method FN called
1779 with the argument list FIRST_ARG/ARGS and add it to CANDIDATES.
1780 FLAGS is passed on to implicit_conversion.
1782 This does not change ARGS.
1784 CTYPE, if non-NULL, is the type we want to pretend this function
1785 comes from for purposes of overload resolution. */
1787 static struct z_candidate *
1788 add_function_candidate (struct z_candidate **candidates,
1789 tree fn, tree ctype, tree first_arg,
1790 const VEC(tree,gc) *args, tree access_path,
1791 tree conversion_path, int flags)
1793 tree parmlist = TYPE_ARG_TYPES (TREE_TYPE (fn));
1797 tree orig_first_arg = first_arg;
1800 struct rejection_reason *reason = NULL;
1802 /* At this point we should not see any functions which haven't been
1803 explicitly declared, except for friend functions which will have
1804 been found using argument dependent lookup. */
1805 gcc_assert (!DECL_ANTICIPATED (fn) || DECL_HIDDEN_FRIEND_P (fn));
1807 /* The `this', `in_chrg' and VTT arguments to constructors are not
1808 considered in overload resolution. */
1809 if (DECL_CONSTRUCTOR_P (fn))
1811 parmlist = skip_artificial_parms_for (fn, parmlist);
1812 skip = num_artificial_parms_for (fn);
1813 if (skip > 0 && first_arg != NULL_TREE)
1816 first_arg = NULL_TREE;
1822 len = VEC_length (tree, args) - skip + (first_arg != NULL_TREE ? 1 : 0);
1823 convs = alloc_conversions (len);
1825 /* 13.3.2 - Viable functions [over.match.viable]
1826 First, to be a viable function, a candidate function shall have enough
1827 parameters to agree in number with the arguments in the list.
1829 We need to check this first; otherwise, checking the ICSes might cause
1830 us to produce an ill-formed template instantiation. */
1832 parmnode = parmlist;
1833 for (i = 0; i < len; ++i)
1835 if (parmnode == NULL_TREE || parmnode == void_list_node)
1837 parmnode = TREE_CHAIN (parmnode);
1840 if ((i < len && parmnode)
1841 || !sufficient_parms_p (parmnode))
1843 int remaining = remaining_arguments (parmnode);
1845 reason = arity_rejection (first_arg, i + remaining, len);
1847 /* When looking for a function from a subobject from an implicit
1848 copy/move constructor/operator=, don't consider anything that takes (a
1849 reference to) an unrelated type. See c++/44909 and core 1092. */
1850 else if (parmlist && (flags & LOOKUP_DEFAULTED))
1852 if (DECL_CONSTRUCTOR_P (fn))
1854 else if (DECL_ASSIGNMENT_OPERATOR_P (fn)
1855 && DECL_OVERLOADED_OPERATOR_P (fn) == NOP_EXPR)
1861 parmnode = chain_index (i-1, parmlist);
1862 if (!reference_related_p (non_reference (TREE_VALUE (parmnode)),
1867 /* This only applies at the top level. */
1868 flags &= ~LOOKUP_DEFAULTED;
1874 /* Second, for F to be a viable function, there shall exist for each
1875 argument an implicit conversion sequence that converts that argument
1876 to the corresponding parameter of F. */
1878 parmnode = parmlist;
1880 for (i = 0; i < len; ++i)
1882 tree arg, argtype, to_type;
1886 if (parmnode == void_list_node)
1889 if (i == 0 && first_arg != NULL_TREE)
1892 arg = VEC_index (tree, args,
1893 i + skip - (first_arg != NULL_TREE ? 1 : 0));
1894 argtype = lvalue_type (arg);
1896 is_this = (i == 0 && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
1897 && ! DECL_CONSTRUCTOR_P (fn));
1901 tree parmtype = TREE_VALUE (parmnode);
1904 parmnode = TREE_CHAIN (parmnode);
1906 /* The type of the implicit object parameter ('this') for
1907 overload resolution is not always the same as for the
1908 function itself; conversion functions are considered to
1909 be members of the class being converted, and functions
1910 introduced by a using-declaration are considered to be
1911 members of the class that uses them.
1913 Since build_over_call ignores the ICS for the `this'
1914 parameter, we can just change the parm type. */
1915 if (ctype && is_this)
1917 parmtype = cp_build_qualified_type
1918 (ctype, cp_type_quals (TREE_TYPE (parmtype)));
1919 parmtype = build_pointer_type (parmtype);
1922 /* Core issue 899: When [copy-]initializing a temporary to be bound
1923 to the first parameter of a copy constructor (12.8) called with
1924 a single argument in the context of direct-initialization,
1925 explicit conversion functions are also considered.
1927 So set LOOKUP_COPY_PARM to let reference_binding know that
1928 it's being called in that context. We generalize the above
1929 to handle move constructors and template constructors as well;
1930 the standardese should soon be updated similarly. */
1931 if (ctype && i == 0 && (len-skip == 1)
1932 && !(flags & LOOKUP_ONLYCONVERTING)
1933 && DECL_CONSTRUCTOR_P (fn)
1934 && parmtype != error_mark_node
1935 && (same_type_ignoring_top_level_qualifiers_p
1936 (non_reference (parmtype), ctype)))
1938 lflags |= LOOKUP_COPY_PARM;
1939 /* We allow user-defined conversions within init-lists, but
1940 not for the copy constructor. */
1941 if (flags & LOOKUP_NO_COPY_CTOR_CONVERSION)
1942 lflags |= LOOKUP_NO_CONVERSION;
1945 lflags |= LOOKUP_ONLYCONVERTING;
1947 t = implicit_conversion (parmtype, argtype, arg,
1948 /*c_cast_p=*/false, lflags);
1953 t = build_identity_conv (argtype, arg);
1954 t->ellipsis_p = true;
1965 reason = arg_conversion_rejection (first_arg, i, argtype, to_type);
1972 reason = bad_arg_conversion_rejection (first_arg, i, argtype, to_type);
1977 return add_candidate (candidates, fn, orig_first_arg, args, len, convs,
1978 access_path, conversion_path, viable, reason);
1981 /* Create an overload candidate for the conversion function FN which will
1982 be invoked for expression OBJ, producing a pointer-to-function which
1983 will in turn be called with the argument list FIRST_ARG/ARGLIST,
1984 and add it to CANDIDATES. This does not change ARGLIST. FLAGS is
1985 passed on to implicit_conversion.
1987 Actually, we don't really care about FN; we care about the type it
1988 converts to. There may be multiple conversion functions that will
1989 convert to that type, and we rely on build_user_type_conversion_1 to
1990 choose the best one; so when we create our candidate, we record the type
1991 instead of the function. */
1993 static struct z_candidate *
1994 add_conv_candidate (struct z_candidate **candidates, tree fn, tree obj,
1995 tree first_arg, const VEC(tree,gc) *arglist,
1996 tree access_path, tree conversion_path)
1998 tree totype = TREE_TYPE (TREE_TYPE (fn));
1999 int i, len, viable, flags;
2000 tree parmlist, parmnode;
2002 struct rejection_reason *reason;
2004 for (parmlist = totype; TREE_CODE (parmlist) != FUNCTION_TYPE; )
2005 parmlist = TREE_TYPE (parmlist);
2006 parmlist = TYPE_ARG_TYPES (parmlist);
2008 len = VEC_length (tree, arglist) + (first_arg != NULL_TREE ? 1 : 0) + 1;
2009 convs = alloc_conversions (len);
2010 parmnode = parmlist;
2012 flags = LOOKUP_IMPLICIT;
2015 /* Don't bother looking up the same type twice. */
2016 if (*candidates && (*candidates)->fn == totype)
2019 for (i = 0; i < len; ++i)
2021 tree arg, argtype, convert_type = NULL_TREE;
2026 else if (i == 1 && first_arg != NULL_TREE)
2029 arg = VEC_index (tree, arglist,
2030 i - (first_arg != NULL_TREE ? 1 : 0) - 1);
2031 argtype = lvalue_type (arg);
2035 t = implicit_conversion (totype, argtype, arg, /*c_cast_p=*/false,
2037 convert_type = totype;
2039 else if (parmnode == void_list_node)
2043 t = implicit_conversion (TREE_VALUE (parmnode), argtype, arg,
2044 /*c_cast_p=*/false, flags);
2045 convert_type = TREE_VALUE (parmnode);
2049 t = build_identity_conv (argtype, arg);
2050 t->ellipsis_p = true;
2051 convert_type = argtype;
2061 reason = bad_arg_conversion_rejection (NULL_TREE, i, argtype, convert_type);
2068 parmnode = TREE_CHAIN (parmnode);
2072 || ! sufficient_parms_p (parmnode))
2074 int remaining = remaining_arguments (parmnode);
2076 reason = arity_rejection (NULL_TREE, i + remaining, len);
2079 return add_candidate (candidates, totype, first_arg, arglist, len, convs,
2080 access_path, conversion_path, viable, reason);
2084 build_builtin_candidate (struct z_candidate **candidates, tree fnname,
2085 tree type1, tree type2, tree *args, tree *argtypes,
2093 struct rejection_reason *reason = NULL;
2098 num_convs = args[2] ? 3 : (args[1] ? 2 : 1);
2099 convs = alloc_conversions (num_convs);
2101 /* TRUTH_*_EXPR do "contextual conversion to bool", which means explicit
2102 conversion ops are allowed. We handle that here by just checking for
2103 boolean_type_node because other operators don't ask for it. COND_EXPR
2104 also does contextual conversion to bool for the first operand, but we
2105 handle that in build_conditional_expr, and type1 here is operand 2. */
2106 if (type1 != boolean_type_node)
2107 flags |= LOOKUP_ONLYCONVERTING;
2109 for (i = 0; i < 2; ++i)
2114 t = implicit_conversion (types[i], argtypes[i], args[i],
2115 /*c_cast_p=*/false, flags);
2119 /* We need something for printing the candidate. */
2120 t = build_identity_conv (types[i], NULL_TREE);
2121 reason = arg_conversion_rejection (NULL_TREE, i, argtypes[i], types[i]);
2126 reason = bad_arg_conversion_rejection (NULL_TREE, i, argtypes[i], types[i]);
2131 /* For COND_EXPR we rearranged the arguments; undo that now. */
2134 convs[2] = convs[1];
2135 convs[1] = convs[0];
2136 t = implicit_conversion (boolean_type_node, argtypes[2], args[2],
2137 /*c_cast_p=*/false, flags);
2143 reason = arg_conversion_rejection (NULL_TREE, 0, argtypes[2],
2148 add_candidate (candidates, fnname, /*first_arg=*/NULL_TREE, /*args=*/NULL,
2150 /*access_path=*/NULL_TREE,
2151 /*conversion_path=*/NULL_TREE,
2156 is_complete (tree t)
2158 return COMPLETE_TYPE_P (complete_type (t));
2161 /* Returns nonzero if TYPE is a promoted arithmetic type. */
2164 promoted_arithmetic_type_p (tree type)
2168 In this section, the term promoted integral type is used to refer
2169 to those integral types which are preserved by integral promotion
2170 (including e.g. int and long but excluding e.g. char).
2171 Similarly, the term promoted arithmetic type refers to promoted
2172 integral types plus floating types. */
2173 return ((CP_INTEGRAL_TYPE_P (type)
2174 && same_type_p (type_promotes_to (type), type))
2175 || TREE_CODE (type) == REAL_TYPE);
2178 /* Create any builtin operator overload candidates for the operator in
2179 question given the converted operand types TYPE1 and TYPE2. The other
2180 args are passed through from add_builtin_candidates to
2181 build_builtin_candidate.
2183 TYPE1 and TYPE2 may not be permissible, and we must filter them.
2184 If CODE is requires candidates operands of the same type of the kind
2185 of which TYPE1 and TYPE2 are, we add both candidates
2186 CODE (TYPE1, TYPE1) and CODE (TYPE2, TYPE2). */
2189 add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
2190 enum tree_code code2, tree fnname, tree type1,
2191 tree type2, tree *args, tree *argtypes, int flags)
2195 case POSTINCREMENT_EXPR:
2196 case POSTDECREMENT_EXPR:
2197 args[1] = integer_zero_node;
2198 type2 = integer_type_node;
2207 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
2208 and VQ is either volatile or empty, there exist candidate operator
2209 functions of the form
2210 VQ T& operator++(VQ T&);
2211 T operator++(VQ T&, int);
2212 5 For every pair T, VQ), where T is an enumeration type or an arithmetic
2213 type other than bool, and VQ is either volatile or empty, there exist
2214 candidate operator functions of the form
2215 VQ T& operator--(VQ T&);
2216 T operator--(VQ T&, int);
2217 6 For every pair T, VQ), where T is a cv-qualified or cv-unqualified
2218 complete object type, and VQ is either volatile or empty, there exist
2219 candidate operator functions of the form
2220 T*VQ& operator++(T*VQ&);
2221 T*VQ& operator--(T*VQ&);
2222 T* operator++(T*VQ&, int);
2223 T* operator--(T*VQ&, int); */
2225 case POSTDECREMENT_EXPR:
2226 case PREDECREMENT_EXPR:
2227 if (TREE_CODE (type1) == BOOLEAN_TYPE)
2229 case POSTINCREMENT_EXPR:
2230 case PREINCREMENT_EXPR:
2231 if (ARITHMETIC_TYPE_P (type1) || TYPE_PTROB_P (type1))
2233 type1 = build_reference_type (type1);
2238 /* 7 For every cv-qualified or cv-unqualified object type T, there
2239 exist candidate operator functions of the form
2243 8 For every function type T, there exist candidate operator functions of
2245 T& operator*(T*); */
2248 if (TREE_CODE (type1) == POINTER_TYPE
2249 && !uses_template_parms (TREE_TYPE (type1))
2250 && (TYPE_PTROB_P (type1)
2251 || TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE))
2255 /* 9 For every type T, there exist candidate operator functions of the form
2258 10For every promoted arithmetic type T, there exist candidate operator
2259 functions of the form
2263 case UNARY_PLUS_EXPR: /* unary + */
2264 if (TREE_CODE (type1) == POINTER_TYPE)
2267 if (ARITHMETIC_TYPE_P (type1))
2271 /* 11For every promoted integral type T, there exist candidate operator
2272 functions of the form
2276 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1))
2280 /* 12For every quintuple C1, C2, T, CV1, CV2), where C2 is a class type, C1
2281 is the same type as C2 or is a derived class of C2, T is a complete
2282 object type or a function type, and CV1 and CV2 are cv-qualifier-seqs,
2283 there exist candidate operator functions of the form
2284 CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
2285 where CV12 is the union of CV1 and CV2. */
2288 if (TREE_CODE (type1) == POINTER_TYPE
2289 && TYPE_PTR_TO_MEMBER_P (type2))
2291 tree c1 = TREE_TYPE (type1);
2292 tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
2294 if (MAYBE_CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
2295 && (TYPE_PTRMEMFUNC_P (type2)
2296 || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
2301 /* 13For every pair of promoted arithmetic types L and R, there exist can-
2302 didate operator functions of the form
2307 bool operator<(L, R);
2308 bool operator>(L, R);
2309 bool operator<=(L, R);
2310 bool operator>=(L, R);
2311 bool operator==(L, R);
2312 bool operator!=(L, R);
2313 where LR is the result of the usual arithmetic conversions between
2316 14For every pair of types T and I, where T is a cv-qualified or cv-
2317 unqualified complete object type and I is a promoted integral type,
2318 there exist candidate operator functions of the form
2319 T* operator+(T*, I);
2320 T& operator[](T*, I);
2321 T* operator-(T*, I);
2322 T* operator+(I, T*);
2323 T& operator[](I, T*);
2325 15For every T, where T is a pointer to complete object type, there exist
2326 candidate operator functions of the form112)
2327 ptrdiff_t operator-(T, T);
2329 16For every pointer or enumeration type T, there exist candidate operator
2330 functions of the form
2331 bool operator<(T, T);
2332 bool operator>(T, T);
2333 bool operator<=(T, T);
2334 bool operator>=(T, T);
2335 bool operator==(T, T);
2336 bool operator!=(T, T);
2338 17For every pointer to member type T, there exist candidate operator
2339 functions of the form
2340 bool operator==(T, T);
2341 bool operator!=(T, T); */
2344 if (TYPE_PTROB_P (type1) && TYPE_PTROB_P (type2))
2346 if (TYPE_PTROB_P (type1)
2347 && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2349 type2 = ptrdiff_type_node;
2353 case TRUNC_DIV_EXPR:
2354 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2360 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2361 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2)))
2363 if (TYPE_PTR_TO_MEMBER_P (type1) && null_ptr_cst_p (args[1]))
2368 if (TYPE_PTR_TO_MEMBER_P (type2) && null_ptr_cst_p (args[0]))
2380 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2382 if (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2384 if (TREE_CODE (type1) == ENUMERAL_TYPE
2385 && TREE_CODE (type2) == ENUMERAL_TYPE)
2387 if (TYPE_PTR_P (type1)
2388 && null_ptr_cst_p (args[1])
2389 && !uses_template_parms (type1))
2394 if (null_ptr_cst_p (args[0])
2395 && TYPE_PTR_P (type2)
2396 && !uses_template_parms (type2))
2404 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2407 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && TYPE_PTROB_P (type2))
2409 type1 = ptrdiff_type_node;
2412 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2414 type2 = ptrdiff_type_node;
2419 /* 18For every pair of promoted integral types L and R, there exist candi-
2420 date operator functions of the form
2427 where LR is the result of the usual arithmetic conversions between
2430 case TRUNC_MOD_EXPR:
2436 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2440 /* 19For every triple L, VQ, R), where L is an arithmetic or enumeration
2441 type, VQ is either volatile or empty, and R is a promoted arithmetic
2442 type, there exist candidate operator functions of the form
2443 VQ L& operator=(VQ L&, R);
2444 VQ L& operator*=(VQ L&, R);
2445 VQ L& operator/=(VQ L&, R);
2446 VQ L& operator+=(VQ L&, R);
2447 VQ L& operator-=(VQ L&, R);
2449 20For every pair T, VQ), where T is any type and VQ is either volatile
2450 or empty, there exist candidate operator functions of the form
2451 T*VQ& operator=(T*VQ&, T*);
2453 21For every pair T, VQ), where T is a pointer to member type and VQ is
2454 either volatile or empty, there exist candidate operator functions of
2456 VQ T& operator=(VQ T&, T);
2458 22For every triple T, VQ, I), where T is a cv-qualified or cv-
2459 unqualified complete object type, VQ is either volatile or empty, and
2460 I is a promoted integral type, there exist candidate operator func-
2462 T*VQ& operator+=(T*VQ&, I);
2463 T*VQ& operator-=(T*VQ&, I);
2465 23For every triple L, VQ, R), where L is an integral or enumeration
2466 type, VQ is either volatile or empty, and R is a promoted integral
2467 type, there exist candidate operator functions of the form
2469 VQ L& operator%=(VQ L&, R);
2470 VQ L& operator<<=(VQ L&, R);
2471 VQ L& operator>>=(VQ L&, R);
2472 VQ L& operator&=(VQ L&, R);
2473 VQ L& operator^=(VQ L&, R);
2474 VQ L& operator|=(VQ L&, R); */
2481 if (TYPE_PTROB_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2483 type2 = ptrdiff_type_node;
2487 case TRUNC_DIV_EXPR:
2488 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2492 case TRUNC_MOD_EXPR:
2498 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type2))
2503 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
2505 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
2506 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2507 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2508 || ((TYPE_PTRMEMFUNC_P (type1)
2509 || TREE_CODE (type1) == POINTER_TYPE)
2510 && null_ptr_cst_p (args[1])))
2520 type1 = build_reference_type (type1);
2526 For every pair of promoted arithmetic types L and R, there
2527 exist candidate operator functions of the form
2529 LR operator?(bool, L, R);
2531 where LR is the result of the usual arithmetic conversions
2532 between types L and R.
2534 For every type T, where T is a pointer or pointer-to-member
2535 type, there exist candidate operator functions of the form T
2536 operator?(bool, T, T); */
2538 if (promoted_arithmetic_type_p (type1)
2539 && promoted_arithmetic_type_p (type2))
2543 /* Otherwise, the types should be pointers. */
2544 if (!(TYPE_PTR_P (type1) || TYPE_PTR_TO_MEMBER_P (type1))
2545 || !(TYPE_PTR_P (type2) || TYPE_PTR_TO_MEMBER_P (type2)))
2548 /* We don't check that the two types are the same; the logic
2549 below will actually create two candidates; one in which both
2550 parameter types are TYPE1, and one in which both parameter
2556 if (ARITHMETIC_TYPE_P (type1))
2564 /* If we're dealing with two pointer types or two enumeral types,
2565 we need candidates for both of them. */
2566 if (type2 && !same_type_p (type1, type2)
2567 && TREE_CODE (type1) == TREE_CODE (type2)
2568 && (TREE_CODE (type1) == REFERENCE_TYPE
2569 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2570 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2571 || TYPE_PTRMEMFUNC_P (type1)
2572 || MAYBE_CLASS_TYPE_P (type1)
2573 || TREE_CODE (type1) == ENUMERAL_TYPE))
2575 build_builtin_candidate
2576 (candidates, fnname, type1, type1, args, argtypes, flags);
2577 build_builtin_candidate
2578 (candidates, fnname, type2, type2, args, argtypes, flags);
2582 build_builtin_candidate
2583 (candidates, fnname, type1, type2, args, argtypes, flags);
2587 type_decays_to (tree type)
2589 if (TREE_CODE (type) == ARRAY_TYPE)
2590 return build_pointer_type (TREE_TYPE (type));
2591 if (TREE_CODE (type) == FUNCTION_TYPE)
2592 return build_pointer_type (type);
2596 /* There are three conditions of builtin candidates:
2598 1) bool-taking candidates. These are the same regardless of the input.
2599 2) pointer-pair taking candidates. These are generated for each type
2600 one of the input types converts to.
2601 3) arithmetic candidates. According to the standard, we should generate
2602 all of these, but I'm trying not to...
2604 Here we generate a superset of the possible candidates for this particular
2605 case. That is a subset of the full set the standard defines, plus some
2606 other cases which the standard disallows. add_builtin_candidate will
2607 filter out the invalid set. */
2610 add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
2611 enum tree_code code2, tree fnname, tree *args,
2616 tree type, argtypes[3], t;
2617 /* TYPES[i] is the set of possible builtin-operator parameter types
2618 we will consider for the Ith argument. */
2619 VEC(tree,gc) *types[2];
2622 for (i = 0; i < 3; ++i)
2625 argtypes[i] = unlowered_expr_type (args[i]);
2627 argtypes[i] = NULL_TREE;
2632 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
2633 and VQ is either volatile or empty, there exist candidate operator
2634 functions of the form
2635 VQ T& operator++(VQ T&); */
2637 case POSTINCREMENT_EXPR:
2638 case PREINCREMENT_EXPR:
2639 case POSTDECREMENT_EXPR:
2640 case PREDECREMENT_EXPR:
2645 /* 24There also exist candidate operator functions of the form
2646 bool operator!(bool);
2647 bool operator&&(bool, bool);
2648 bool operator||(bool, bool); */
2650 case TRUTH_NOT_EXPR:
2651 build_builtin_candidate
2652 (candidates, fnname, boolean_type_node,
2653 NULL_TREE, args, argtypes, flags);
2656 case TRUTH_ORIF_EXPR:
2657 case TRUTH_ANDIF_EXPR:
2658 build_builtin_candidate
2659 (candidates, fnname, boolean_type_node,
2660 boolean_type_node, args, argtypes, flags);
2682 types[0] = make_tree_vector ();
2683 types[1] = make_tree_vector ();
2685 for (i = 0; i < 2; ++i)
2689 else if (MAYBE_CLASS_TYPE_P (argtypes[i]))
2693 if (i == 0 && code == MODIFY_EXPR && code2 == NOP_EXPR)
2696 convs = lookup_conversions (argtypes[i]);
2698 if (code == COND_EXPR)
2700 if (real_lvalue_p (args[i]))
2701 VEC_safe_push (tree, gc, types[i],
2702 build_reference_type (argtypes[i]));
2704 VEC_safe_push (tree, gc, types[i],
2705 TYPE_MAIN_VARIANT (argtypes[i]));
2711 for (; convs; convs = TREE_CHAIN (convs))
2713 type = TREE_TYPE (convs);
2716 && (TREE_CODE (type) != REFERENCE_TYPE
2717 || CP_TYPE_CONST_P (TREE_TYPE (type))))
2720 if (code == COND_EXPR && TREE_CODE (type) == REFERENCE_TYPE)
2721 VEC_safe_push (tree, gc, types[i], type);
2723 type = non_reference (type);
2724 if (i != 0 || ! ref1)
2726 type = cv_unqualified (type_decays_to (type));
2727 if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
2728 VEC_safe_push (tree, gc, types[i], type);
2729 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2730 type = type_promotes_to (type);
2733 if (! vec_member (type, types[i]))
2734 VEC_safe_push (tree, gc, types[i], type);
2739 if (code == COND_EXPR && real_lvalue_p (args[i]))
2740 VEC_safe_push (tree, gc, types[i],
2741 build_reference_type (argtypes[i]));
2742 type = non_reference (argtypes[i]);
2743 if (i != 0 || ! ref1)
2745 type = cv_unqualified (type_decays_to (type));
2746 if (enum_p && UNSCOPED_ENUM_P (type))
2747 VEC_safe_push (tree, gc, types[i], type);
2748 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2749 type = type_promotes_to (type);
2751 VEC_safe_push (tree, gc, types[i], type);
2755 /* Run through the possible parameter types of both arguments,
2756 creating candidates with those parameter types. */
2757 FOR_EACH_VEC_ELT_REVERSE (tree, types[0], ix, t)
2762 if (!VEC_empty (tree, types[1]))
2763 FOR_EACH_VEC_ELT_REVERSE (tree, types[1], jx, u)
2764 add_builtin_candidate
2765 (candidates, code, code2, fnname, t,
2766 u, args, argtypes, flags);
2768 add_builtin_candidate
2769 (candidates, code, code2, fnname, t,
2770 NULL_TREE, args, argtypes, flags);
2773 release_tree_vector (types[0]);
2774 release_tree_vector (types[1]);
2778 /* If TMPL can be successfully instantiated as indicated by
2779 EXPLICIT_TARGS and ARGLIST, adds the instantiation to CANDIDATES.
2781 TMPL is the template. EXPLICIT_TARGS are any explicit template
2782 arguments. ARGLIST is the arguments provided at the call-site.
2783 This does not change ARGLIST. The RETURN_TYPE is the desired type
2784 for conversion operators. If OBJ is NULL_TREE, FLAGS and CTYPE are
2785 as for add_function_candidate. If an OBJ is supplied, FLAGS and
2786 CTYPE are ignored, and OBJ is as for add_conv_candidate. */
2788 static struct z_candidate*
2789 add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
2790 tree ctype, tree explicit_targs, tree first_arg,
2791 const VEC(tree,gc) *arglist, tree return_type,
2792 tree access_path, tree conversion_path,
2793 int flags, tree obj, unification_kind_t strict)
2795 int ntparms = DECL_NTPARMS (tmpl);
2796 tree targs = make_tree_vec (ntparms);
2797 unsigned int len = VEC_length (tree, arglist);
2798 unsigned int nargs = (first_arg == NULL_TREE ? 0 : 1) + len;
2799 unsigned int skip_without_in_chrg = 0;
2800 tree first_arg_without_in_chrg = first_arg;
2801 tree *args_without_in_chrg;
2802 unsigned int nargs_without_in_chrg;
2803 unsigned int ia, ix;
2805 struct z_candidate *cand;
2808 struct rejection_reason *reason = NULL;
2811 /* We don't do deduction on the in-charge parameter, the VTT
2812 parameter or 'this'. */
2813 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (tmpl))
2815 if (first_arg_without_in_chrg != NULL_TREE)
2816 first_arg_without_in_chrg = NULL_TREE;
2818 ++skip_without_in_chrg;
2821 if ((DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (tmpl)
2822 || DECL_BASE_CONSTRUCTOR_P (tmpl))
2823 && CLASSTYPE_VBASECLASSES (DECL_CONTEXT (tmpl)))
2825 if (first_arg_without_in_chrg != NULL_TREE)
2826 first_arg_without_in_chrg = NULL_TREE;
2828 ++skip_without_in_chrg;
2831 if (len < skip_without_in_chrg)
2834 nargs_without_in_chrg = ((first_arg_without_in_chrg != NULL_TREE ? 1 : 0)
2835 + (len - skip_without_in_chrg));
2836 args_without_in_chrg = XALLOCAVEC (tree, nargs_without_in_chrg);
2838 if (first_arg_without_in_chrg != NULL_TREE)
2840 args_without_in_chrg[ia] = first_arg_without_in_chrg;
2843 for (ix = skip_without_in_chrg;
2844 VEC_iterate (tree, arglist, ix, arg);
2847 args_without_in_chrg[ia] = arg;
2850 gcc_assert (ia == nargs_without_in_chrg);
2852 errs = errorcount+sorrycount;
2853 i = fn_type_unification (tmpl, explicit_targs, targs,
2854 args_without_in_chrg,
2855 nargs_without_in_chrg,
2856 return_type, strict, flags, false);
2860 /* Don't repeat unification later if it already resulted in errors. */
2861 if (errorcount+sorrycount == errs)
2862 reason = template_unification_rejection (tmpl, explicit_targs,
2863 targs, args_without_in_chrg,
2864 nargs_without_in_chrg,
2865 return_type, strict, flags);
2867 reason = template_unification_error_rejection ();
2871 fn = instantiate_template (tmpl, targs, tf_none);
2872 if (fn == error_mark_node)
2874 reason = template_instantiation_rejection (tmpl, targs);
2880 A member function template is never instantiated to perform the
2881 copy of a class object to an object of its class type.
2883 It's a little unclear what this means; the standard explicitly
2884 does allow a template to be used to copy a class. For example,
2889 template <class T> A(const T&);
2892 void g () { A a (f ()); }
2894 the member template will be used to make the copy. The section
2895 quoted above appears in the paragraph that forbids constructors
2896 whose only parameter is (a possibly cv-qualified variant of) the
2897 class type, and a logical interpretation is that the intent was
2898 to forbid the instantiation of member templates which would then
2900 if (DECL_CONSTRUCTOR_P (fn) && nargs == 2)
2902 tree arg_types = FUNCTION_FIRST_USER_PARMTYPE (fn);
2903 if (arg_types && same_type_p (TYPE_MAIN_VARIANT (TREE_VALUE (arg_types)),
2906 reason = invalid_copy_with_fn_template_rejection ();
2911 if (obj != NULL_TREE)
2912 /* Aha, this is a conversion function. */
2913 cand = add_conv_candidate (candidates, fn, obj, first_arg, arglist,
2914 access_path, conversion_path);
2916 cand = add_function_candidate (candidates, fn, ctype,
2917 first_arg, arglist, access_path,
2918 conversion_path, flags);
2919 if (DECL_TI_TEMPLATE (fn) != tmpl)
2920 /* This situation can occur if a member template of a template
2921 class is specialized. Then, instantiate_template might return
2922 an instantiation of the specialization, in which case the
2923 DECL_TI_TEMPLATE field will point at the original
2924 specialization. For example:
2926 template <class T> struct S { template <class U> void f(U);
2927 template <> void f(int) {}; };
2931 Here, TMPL will be template <class U> S<double>::f(U).
2932 And, instantiate template will give us the specialization
2933 template <> S<double>::f(int). But, the DECL_TI_TEMPLATE field
2934 for this will point at template <class T> template <> S<T>::f(int),
2935 so that we can find the definition. For the purposes of
2936 overload resolution, however, we want the original TMPL. */
2937 cand->template_decl = build_template_info (tmpl, targs);
2939 cand->template_decl = DECL_TEMPLATE_INFO (fn);
2940 cand->explicit_targs = explicit_targs;
2944 return add_candidate (candidates, tmpl, first_arg, arglist, nargs, NULL,
2945 access_path, conversion_path, 0, reason);
2949 static struct z_candidate *
2950 add_template_candidate (struct z_candidate **candidates, tree tmpl, tree ctype,
2951 tree explicit_targs, tree first_arg,
2952 const VEC(tree,gc) *arglist, tree return_type,
2953 tree access_path, tree conversion_path, int flags,
2954 unification_kind_t strict)
2957 add_template_candidate_real (candidates, tmpl, ctype,
2958 explicit_targs, first_arg, arglist,
2959 return_type, access_path, conversion_path,
2960 flags, NULL_TREE, strict);
2964 static struct z_candidate *
2965 add_template_conv_candidate (struct z_candidate **candidates, tree tmpl,
2966 tree obj, tree first_arg,
2967 const VEC(tree,gc) *arglist,
2968 tree return_type, tree access_path,
2969 tree conversion_path)
2972 add_template_candidate_real (candidates, tmpl, NULL_TREE, NULL_TREE,
2973 first_arg, arglist, return_type, access_path,
2974 conversion_path, 0, obj, DEDUCE_CONV);
2977 /* The CANDS are the set of candidates that were considered for
2978 overload resolution. Return the set of viable candidates, or CANDS
2979 if none are viable. If any of the candidates were viable, set
2980 *ANY_VIABLE_P to true. STRICT_P is true if a candidate should be
2981 considered viable only if it is strictly viable. */
2983 static struct z_candidate*
2984 splice_viable (struct z_candidate *cands,
2988 struct z_candidate *viable;
2989 struct z_candidate **last_viable;
2990 struct z_candidate **cand;
2992 /* Be strict inside templates, since build_over_call won't actually
2993 do the conversions to get pedwarns. */
2994 if (processing_template_decl)
2998 last_viable = &viable;
2999 *any_viable_p = false;
3004 struct z_candidate *c = *cand;
3005 if (strict_p ? c->viable == 1 : c->viable)
3010 last_viable = &c->next;
3011 *any_viable_p = true;
3017 return viable ? viable : cands;
3021 any_strictly_viable (struct z_candidate *cands)
3023 for (; cands; cands = cands->next)
3024 if (cands->viable == 1)
3029 /* OBJ is being used in an expression like "OBJ.f (...)". In other
3030 words, it is about to become the "this" pointer for a member
3031 function call. Take the address of the object. */
3034 build_this (tree obj)
3036 /* In a template, we are only concerned about the type of the
3037 expression, so we can take a shortcut. */
3038 if (processing_template_decl)
3039 return build_address (obj);
3041 return cp_build_addr_expr (obj, tf_warning_or_error);
3044 /* Returns true iff functions are equivalent. Equivalent functions are
3045 not '==' only if one is a function-local extern function or if
3046 both are extern "C". */
3049 equal_functions (tree fn1, tree fn2)
3051 if (TREE_CODE (fn1) != TREE_CODE (fn2))
3053 if (TREE_CODE (fn1) == TEMPLATE_DECL)
3055 if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2)
3056 || DECL_EXTERN_C_FUNCTION_P (fn1))
3057 return decls_match (fn1, fn2);
3061 /* Print information about a candidate being rejected due to INFO. */
3064 print_conversion_rejection (location_t loc, struct conversion_info *info)
3066 if (info->n_arg == -1)
3067 /* Conversion of implicit `this' argument failed. */
3068 inform (loc, " no known conversion for implicit "
3069 "%<this%> parameter from %qT to %qT",
3070 info->from_type, info->to_type);
3072 inform (loc, " no known conversion for argument %d from %qT to %qT",
3073 info->n_arg+1, info->from_type, info->to_type);
3076 /* Print information about a candidate with WANT parameters and we found
3080 print_arity_information (location_t loc, unsigned int have, unsigned int want)
3082 inform_n (loc, want,
3083 " candidate expects %d argument, %d provided",
3084 " candidate expects %d arguments, %d provided",
3088 /* Print information about one overload candidate CANDIDATE. MSGSTR
3089 is the text to print before the candidate itself.
3091 NOTE: Unlike most diagnostic functions in GCC, MSGSTR is expected
3092 to have been run through gettext by the caller. This wart makes
3093 life simpler in print_z_candidates and for the translators. */
3096 print_z_candidate (const char *msgstr, struct z_candidate *candidate)
3098 const char *msg = (msgstr == NULL
3100 : ACONCAT ((msgstr, " ", NULL)));
3101 location_t loc = location_of (candidate->fn);
3103 if (TREE_CODE (candidate->fn) == IDENTIFIER_NODE)
3105 if (candidate->num_convs == 3)
3106 inform (input_location, "%s%D(%T, %T, %T) <built-in>", msg, candidate->fn,
3107 candidate->convs[0]->type,
3108 candidate->convs[1]->type,
3109 candidate->convs[2]->type);
3110 else if (candidate->num_convs == 2)
3111 inform (input_location, "%s%D(%T, %T) <built-in>", msg, candidate->fn,
3112 candidate->convs[0]->type,
3113 candidate->convs[1]->type);
3115 inform (input_location, "%s%D(%T) <built-in>", msg, candidate->fn,
3116 candidate->convs[0]->type);
3118 else if (TYPE_P (candidate->fn))
3119 inform (input_location, "%s%T <conversion>", msg, candidate->fn);
3120 else if (candidate->viable == -1)
3121 inform (loc, "%s%#D <near match>", msg, candidate->fn);
3122 else if (DECL_DELETED_FN (STRIP_TEMPLATE (candidate->fn)))
3123 inform (loc, "%s%#D <deleted>", msg, candidate->fn);
3125 inform (loc, "%s%#D", msg, candidate->fn);
3126 /* Give the user some information about why this candidate failed. */
3127 if (candidate->reason != NULL)
3129 struct rejection_reason *r = candidate->reason;
3134 print_arity_information (loc, r->u.arity.actual,
3135 r->u.arity.expected);
3137 case rr_arg_conversion:
3138 print_conversion_rejection (loc, &r->u.conversion);
3140 case rr_bad_arg_conversion:
3141 print_conversion_rejection (loc, &r->u.bad_conversion);
3143 case rr_explicit_conversion:
3144 inform (loc, " return type %qT of explicit conversion function "
3145 "cannot be converted to %qT with a qualification "
3146 "conversion", r->u.conversion.from_type,
3147 r->u.conversion.to_type);
3149 case rr_template_conversion:
3150 inform (loc, " conversion from return type %qT of template "
3151 "conversion function specialization to %qT is not an "
3152 "exact match", r->u.conversion.from_type,
3153 r->u.conversion.to_type);
3155 case rr_template_unification:
3156 /* We use template_unification_error_rejection if unification caused
3157 actual non-SFINAE errors, in which case we don't need to repeat
3159 if (r->u.template_unification.tmpl == NULL_TREE)
3161 inform (loc, " substitution of deduced template arguments "
3162 "resulted in errors seen above");
3165 /* Re-run template unification with diagnostics. */
3166 inform (loc, " template argument deduction/substitution failed:");
3167 fn_type_unification (r->u.template_unification.tmpl,
3168 r->u.template_unification.explicit_targs,
3169 r->u.template_unification.targs,
3170 r->u.template_unification.args,
3171 r->u.template_unification.nargs,
3172 r->u.template_unification.return_type,
3173 r->u.template_unification.strict,
3174 r->u.template_unification.flags,
3177 case rr_template_instantiation:
3178 /* Re-run template instantiation with diagnostics. */
3179 instantiate_template (r->u.template_instantiation.tmpl,
3180 r->u.template_instantiation.targs,
3181 tf_warning_or_error);
3183 case rr_invalid_copy:
3185 " a constructor taking a single argument of its own "
3186 "class type is invalid");
3190 /* This candidate didn't have any issues or we failed to
3191 handle a particular code. Either way... */
3198 print_z_candidates (location_t loc, struct z_candidate *candidates)
3200 struct z_candidate *cand1;
3201 struct z_candidate **cand2;
3207 /* Remove non-viable deleted candidates. */
3209 for (cand2 = &cand1; *cand2; )
3211 if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
3212 && !(*cand2)->viable
3213 && DECL_DELETED_FN ((*cand2)->fn))
3214 *cand2 = (*cand2)->next;
3216 cand2 = &(*cand2)->next;
3218 /* ...if there are any non-deleted ones. */
3222 /* There may be duplicates in the set of candidates. We put off
3223 checking this condition as long as possible, since we have no way
3224 to eliminate duplicates from a set of functions in less than n^2
3225 time. Now we are about to emit an error message, so it is more
3226 permissible to go slowly. */
3227 for (cand1 = candidates; cand1; cand1 = cand1->next)
3229 tree fn = cand1->fn;
3230 /* Skip builtin candidates and conversion functions. */
3233 cand2 = &cand1->next;
3236 if (DECL_P ((*cand2)->fn)
3237 && equal_functions (fn, (*cand2)->fn))
3238 *cand2 = (*cand2)->next;
3240 cand2 = &(*cand2)->next;
3244 for (n_candidates = 0, cand1 = candidates; cand1; cand1 = cand1->next)
3247 inform_n (loc, n_candidates, "candidate is:", "candidates are:");
3248 for (; candidates; candidates = candidates->next)
3249 print_z_candidate (NULL, candidates);
3252 /* USER_SEQ is a user-defined conversion sequence, beginning with a
3253 USER_CONV. STD_SEQ is the standard conversion sequence applied to
3254 the result of the conversion function to convert it to the final
3255 desired type. Merge the two sequences into a single sequence,
3256 and return the merged sequence. */
3259 merge_conversion_sequences (conversion *user_seq, conversion *std_seq)
3262 bool bad = user_seq->bad_p;
3264 gcc_assert (user_seq->kind == ck_user);
3266 /* Find the end of the second conversion sequence. */
3267 for (t = &std_seq; (*t)->kind != ck_identity; t = &((*t)->u.next))
3269 /* The entire sequence is a user-conversion sequence. */
3270 (*t)->user_conv_p = true;
3275 /* Replace the identity conversion with the user conversion
3282 /* Handle overload resolution for initializing an object of class type from
3283 an initializer list. First we look for a suitable constructor that
3284 takes a std::initializer_list; if we don't find one, we then look for a
3285 non-list constructor.
3287 Parameters are as for add_candidates, except that the arguments are in
3288 the form of a CONSTRUCTOR (the initializer list) rather than a VEC, and
3289 the RETURN_TYPE parameter is replaced by TOTYPE, the desired type. */
3292 add_list_candidates (tree fns, tree first_arg,
3293 tree init_list, tree totype,
3294 tree explicit_targs, bool template_only,
3295 tree conversion_path, tree access_path,
3297 struct z_candidate **candidates)
3301 gcc_assert (*candidates == NULL);
3303 /* For list-initialization we consider explicit constructors, but
3304 give an error if one is selected. */
3305 flags &= ~LOOKUP_ONLYCONVERTING;
3306 /* And we don't allow narrowing conversions. We also use this flag to
3307 avoid the copy constructor call for copy-list-initialization. */
3308 flags |= LOOKUP_NO_NARROWING;
3310 /* Always use the default constructor if the list is empty (DR 990). */
3311 if (CONSTRUCTOR_NELTS (init_list) == 0
3312 && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype))
3314 /* If the class has a list ctor, try passing the list as a single
3315 argument first, but only consider list ctors. */
3316 else if (TYPE_HAS_LIST_CTOR (totype))
3318 flags |= LOOKUP_LIST_ONLY;
3319 args = make_tree_vector_single (init_list);
3320 add_candidates (fns, first_arg, args, NULL_TREE,
3321 explicit_targs, template_only, conversion_path,
3322 access_path, flags, candidates);
3323 if (any_strictly_viable (*candidates))
3327 args = ctor_to_vec (init_list);
3329 /* We aren't looking for list-ctors anymore. */
3330 flags &= ~LOOKUP_LIST_ONLY;
3331 /* We allow more user-defined conversions within an init-list. */
3332 flags &= ~LOOKUP_NO_CONVERSION;
3333 /* But not for the copy ctor. */
3334 flags |= LOOKUP_NO_COPY_CTOR_CONVERSION;
3336 add_candidates (fns, first_arg, args, NULL_TREE,
3337 explicit_targs, template_only, conversion_path,
3338 access_path, flags, candidates);
3341 /* Returns the best overload candidate to perform the requested
3342 conversion. This function is used for three the overloading situations
3343 described in [over.match.copy], [over.match.conv], and [over.match.ref].
3344 If TOTYPE is a REFERENCE_TYPE, we're trying to find a direct binding as
3345 per [dcl.init.ref], so we ignore temporary bindings. */
3347 static struct z_candidate *
3348 build_user_type_conversion_1 (tree totype, tree expr, int flags)
3350 struct z_candidate *candidates, *cand;
3351 tree fromtype = TREE_TYPE (expr);
3352 tree ctors = NULL_TREE;
3353 tree conv_fns = NULL_TREE;
3354 conversion *conv = NULL;
3355 tree first_arg = NULL_TREE;
3356 VEC(tree,gc) *args = NULL;
3360 /* We represent conversion within a hierarchy using RVALUE_CONV and
3361 BASE_CONV, as specified by [over.best.ics]; these become plain
3362 constructor calls, as specified in [dcl.init]. */
3363 gcc_assert (!MAYBE_CLASS_TYPE_P (fromtype) || !MAYBE_CLASS_TYPE_P (totype)
3364 || !DERIVED_FROM_P (totype, fromtype));
3366 if (MAYBE_CLASS_TYPE_P (totype))
3367 /* Use lookup_fnfields_slot instead of lookup_fnfields to avoid
3368 creating a garbage BASELINK; constructors can't be inherited. */
3369 ctors = lookup_fnfields_slot (totype, complete_ctor_identifier);
3371 if (MAYBE_CLASS_TYPE_P (fromtype))
3373 tree to_nonref = non_reference (totype);
3374 if (same_type_ignoring_top_level_qualifiers_p (to_nonref, fromtype) ||
3375 (CLASS_TYPE_P (to_nonref) && CLASS_TYPE_P (fromtype)
3376 && DERIVED_FROM_P (to_nonref, fromtype)))
3378 /* [class.conv.fct] A conversion function is never used to
3379 convert a (possibly cv-qualified) object to the (possibly
3380 cv-qualified) same object type (or a reference to it), to a
3381 (possibly cv-qualified) base class of that type (or a
3382 reference to it)... */
3385 conv_fns = lookup_conversions (fromtype);
3389 flags |= LOOKUP_NO_CONVERSION;
3390 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
3391 flags |= LOOKUP_NO_NARROWING;
3393 /* It's OK to bind a temporary for converting constructor arguments, but
3394 not in converting the return value of a conversion operator. */
3395 convflags = ((flags & LOOKUP_NO_TEMP_BIND) | LOOKUP_NO_CONVERSION);
3396 flags &= ~LOOKUP_NO_TEMP_BIND;
3400 int ctorflags = flags;
3402 first_arg = build_int_cst (build_pointer_type (totype), 0);
3404 /* We should never try to call the abstract or base constructor
3406 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (OVL_CURRENT (ctors))
3407 && !DECL_HAS_VTT_PARM_P (OVL_CURRENT (ctors)));
3409 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
3411 /* List-initialization. */
3412 add_list_candidates (ctors, first_arg, expr, totype, NULL_TREE,
3413 false, TYPE_BINFO (totype), TYPE_BINFO (totype),
3414 ctorflags, &candidates);
3418 args = make_tree_vector_single (expr);
3419 add_candidates (ctors, first_arg, args, NULL_TREE, NULL_TREE, false,
3420 TYPE_BINFO (totype), TYPE_BINFO (totype),
3421 ctorflags, &candidates);
3424 for (cand = candidates; cand; cand = cand->next)
3426 cand->second_conv = build_identity_conv (totype, NULL_TREE);
3428 /* If totype isn't a reference, and LOOKUP_NO_TEMP_BIND isn't
3429 set, then this is copy-initialization. In that case, "The
3430 result of the call is then used to direct-initialize the
3431 object that is the destination of the copy-initialization."
3434 We represent this in the conversion sequence with an
3435 rvalue conversion, which means a constructor call. */
3436 if (TREE_CODE (totype) != REFERENCE_TYPE
3437 && !(convflags & LOOKUP_NO_TEMP_BIND))
3439 = build_conv (ck_rvalue, totype, cand->second_conv);
3444 first_arg = build_this (expr);
3446 for (; conv_fns; conv_fns = TREE_CHAIN (conv_fns))
3448 tree conversion_path = TREE_PURPOSE (conv_fns);
3449 struct z_candidate *old_candidates;
3451 /* If we are called to convert to a reference type, we are trying to
3452 find a direct binding, so don't even consider temporaries. If
3453 we don't find a direct binding, the caller will try again to
3454 look for a temporary binding. */
3455 if (TREE_CODE (totype) == REFERENCE_TYPE)
3456 convflags |= LOOKUP_NO_TEMP_BIND;
3458 old_candidates = candidates;
3459 add_candidates (TREE_VALUE (conv_fns), first_arg, NULL, totype,
3461 conversion_path, TYPE_BINFO (fromtype),
3462 flags, &candidates);
3464 for (cand = candidates; cand != old_candidates; cand = cand->next)
3466 tree rettype = TREE_TYPE (TREE_TYPE (cand->fn));
3468 = implicit_conversion (totype,
3471 /*c_cast_p=*/false, convflags);
3473 /* If LOOKUP_NO_TEMP_BIND isn't set, then this is
3474 copy-initialization. In that case, "The result of the
3475 call is then used to direct-initialize the object that is
3476 the destination of the copy-initialization." [dcl.init]
3478 We represent this in the conversion sequence with an
3479 rvalue conversion, which means a constructor call. But
3480 don't add a second rvalue conversion if there's already
3481 one there. Which there really shouldn't be, but it's
3482 harmless since we'd add it here anyway. */
3483 if (ics && MAYBE_CLASS_TYPE_P (totype) && ics->kind != ck_rvalue
3484 && !(convflags & LOOKUP_NO_TEMP_BIND))
3485 ics = build_conv (ck_rvalue, totype, ics);
3487 cand->second_conv = ics;
3492 cand->reason = arg_conversion_rejection (NULL_TREE, -1,
3495 else if (DECL_NONCONVERTING_P (cand->fn)
3496 && ics->rank > cr_exact)
3498 /* 13.3.1.5: For direct-initialization, those explicit
3499 conversion functions that are not hidden within S and
3500 yield type T or a type that can be converted to type T
3501 with a qualification conversion (4.4) are also candidate
3503 /* 13.3.1.6 doesn't have a parallel restriction, but it should;
3504 I've raised this issue with the committee. --jason 9/2011 */
3506 cand->reason = explicit_conversion_rejection (rettype, totype);
3508 else if (cand->viable == 1 && ics->bad_p)
3512 = bad_arg_conversion_rejection (NULL_TREE, -1,
3515 else if (primary_template_instantiation_p (cand->fn)
3516 && ics->rank > cr_exact)
3518 /* 13.3.3.1.2: If the user-defined conversion is specified by
3519 a specialization of a conversion function template, the
3520 second standard conversion sequence shall have exact match
3523 cand->reason = template_conversion_rejection (rettype, totype);
3528 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3532 release_tree_vector (args);
3536 cand = tourney (candidates);
3539 if (flags & LOOKUP_COMPLAIN)
3541 error ("conversion from %qT to %qT is ambiguous",
3543 print_z_candidates (location_of (expr), candidates);
3546 cand = candidates; /* any one will do */
3547 cand->second_conv = build_ambiguous_conv (totype, expr);
3548 cand->second_conv->user_conv_p = true;
3549 if (!any_strictly_viable (candidates))
3550 cand->second_conv->bad_p = true;
3551 /* If there are viable candidates, don't set ICS_BAD_FLAG; an
3552 ambiguous conversion is no worse than another user-defined
3558 /* Build the user conversion sequence. */
3561 (DECL_CONSTRUCTOR_P (cand->fn)
3562 ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
3563 build_identity_conv (TREE_TYPE (expr), expr));
3565 if (cand->viable == -1)
3568 /* Remember that this was a list-initialization. */
3569 if (flags & LOOKUP_NO_NARROWING)
3570 conv->check_narrowing = true;
3572 /* Combine it with the second conversion sequence. */
3573 cand->second_conv = merge_conversion_sequences (conv,
3579 /* Wrapper for above. */
3582 build_user_type_conversion (tree totype, tree expr, int flags)
3584 struct z_candidate *cand;
3587 bool subtime = timevar_cond_start (TV_OVERLOAD);
3588 cand = build_user_type_conversion_1 (totype, expr, flags);
3592 if (cand->second_conv->kind == ck_ambig)
3593 ret = error_mark_node;
3596 expr = convert_like (cand->second_conv, expr, tf_warning_or_error);
3597 ret = convert_from_reference (expr);
3603 timevar_cond_stop (TV_OVERLOAD, subtime);
3607 /* Subroutine of convert_nontype_argument.
3609 EXPR is an argument for a template non-type parameter of integral or
3610 enumeration type. Do any necessary conversions (that are permitted for
3611 non-type arguments) to convert it to the parameter type.
3613 If conversion is successful, returns the converted expression;
3614 otherwise, returns error_mark_node. */
3617 build_integral_nontype_arg_conv (tree type, tree expr, tsubst_flags_t complain)
3623 if (error_operand_p (expr))
3624 return error_mark_node;
3626 gcc_assert (INTEGRAL_OR_ENUMERATION_TYPE_P (type));
3628 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3629 p = conversion_obstack_alloc (0);
3631 conv = implicit_conversion (type, TREE_TYPE (expr), expr,
3635 /* for a non-type template-parameter of integral or
3636 enumeration type, integral promotions (4.5) and integral
3637 conversions (4.7) are applied. */
3638 /* It should be sufficient to check the outermost conversion step, since
3639 there are no qualification conversions to integer type. */
3643 /* A conversion function is OK. If it isn't constexpr, we'll
3644 complain later that the argument isn't constant. */
3646 /* The lvalue-to-rvalue conversion is OK. */
3652 t = conv->u.next->type;
3653 if (INTEGRAL_OR_ENUMERATION_TYPE_P (t))
3656 if (complain & tf_error)
3657 error ("conversion from %qT to %qT not considered for "
3658 "non-type template argument", t, type);
3659 /* and fall through. */
3667 expr = convert_like (conv, expr, complain);
3669 expr = error_mark_node;
3671 /* Free all the conversions we allocated. */
3672 obstack_free (&conversion_obstack, p);
3677 /* Do any initial processing on the arguments to a function call. */
3679 static VEC(tree,gc) *
3680 resolve_args (VEC(tree,gc) *args, tsubst_flags_t complain)
3685 FOR_EACH_VEC_ELT (tree, args, ix, arg)
3687 if (error_operand_p (arg))
3689 else if (VOID_TYPE_P (TREE_TYPE (arg)))
3691 if (complain & tf_error)
3692 error ("invalid use of void expression");
3695 else if (invalid_nonstatic_memfn_p (arg, tf_warning_or_error))
3701 /* Perform overload resolution on FN, which is called with the ARGS.
3703 Return the candidate function selected by overload resolution, or
3704 NULL if the event that overload resolution failed. In the case
3705 that overload resolution fails, *CANDIDATES will be the set of
3706 candidates considered, and ANY_VIABLE_P will be set to true or
3707 false to indicate whether or not any of the candidates were
3710 The ARGS should already have gone through RESOLVE_ARGS before this
3711 function is called. */
3713 static struct z_candidate *
3714 perform_overload_resolution (tree fn,
3715 const VEC(tree,gc) *args,
3716 struct z_candidate **candidates,
3719 struct z_candidate *cand;
3720 tree explicit_targs;
3723 bool subtime = timevar_cond_start (TV_OVERLOAD);
3725 explicit_targs = NULL_TREE;
3729 *any_viable_p = true;
3732 gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
3733 || TREE_CODE (fn) == TEMPLATE_DECL
3734 || TREE_CODE (fn) == OVERLOAD
3735 || TREE_CODE (fn) == TEMPLATE_ID_EXPR);
3737 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3739 explicit_targs = TREE_OPERAND (fn, 1);
3740 fn = TREE_OPERAND (fn, 0);
3744 /* Add the various candidate functions. */
3745 add_candidates (fn, NULL_TREE, args, NULL_TREE,
3746 explicit_targs, template_only,
3747 /*conversion_path=*/NULL_TREE,
3748 /*access_path=*/NULL_TREE,
3752 *candidates = splice_viable (*candidates, pedantic, any_viable_p);
3754 cand = tourney (*candidates);
3758 timevar_cond_stop (TV_OVERLOAD, subtime);
3762 /* Print an error message about being unable to build a call to FN with
3763 ARGS. ANY_VIABLE_P indicates whether any candidate functions could
3764 be located; CANDIDATES is a possibly empty list of such
3768 print_error_for_call_failure (tree fn, VEC(tree,gc) *args, bool any_viable_p,
3769 struct z_candidate *candidates)
3771 tree name = DECL_NAME (OVL_CURRENT (fn));
3772 location_t loc = location_of (name);
3775 error_at (loc, "no matching function for call to %<%D(%A)%>",
3776 name, build_tree_list_vec (args));
3778 error_at (loc, "call of overloaded %<%D(%A)%> is ambiguous",
3779 name, build_tree_list_vec (args));
3781 print_z_candidates (loc, candidates);
3784 /* Return an expression for a call to FN (a namespace-scope function,
3785 or a static member function) with the ARGS. This may change
3789 build_new_function_call (tree fn, VEC(tree,gc) **args, bool koenig_p,
3790 tsubst_flags_t complain)
3792 struct z_candidate *candidates, *cand;
3797 if (args != NULL && *args != NULL)
3799 *args = resolve_args (*args, complain);
3801 return error_mark_node;
3804 /* If this function was found without using argument dependent
3805 lookup, then we want to ignore any undeclared friend
3811 fn = remove_hidden_names (fn);
3814 if (complain & tf_error)
3815 print_error_for_call_failure (orig_fn, *args, false, NULL);
3816 return error_mark_node;
3820 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3821 p = conversion_obstack_alloc (0);
3823 cand = perform_overload_resolution (fn, *args, &candidates, &any_viable_p);
3827 if (complain & tf_error)
3829 if (!any_viable_p && candidates && ! candidates->next
3830 && (TREE_CODE (candidates->fn) == FUNCTION_DECL))
3831 return cp_build_function_call_vec (candidates->fn, args, complain);
3832 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3833 fn = TREE_OPERAND (fn, 0);
3834 print_error_for_call_failure (fn, *args, any_viable_p, candidates);
3836 result = error_mark_node;
3840 int flags = LOOKUP_NORMAL;
3841 /* If fn is template_id_expr, the call has explicit template arguments
3842 (e.g. func<int>(5)), communicate this info to build_over_call
3843 through flags so that later we can use it to decide whether to warn
3844 about peculiar null pointer conversion. */
3845 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
3846 flags |= LOOKUP_EXPLICIT_TMPL_ARGS;
3847 result = build_over_call (cand, flags, complain);
3850 /* Free all the conversions we allocated. */
3851 obstack_free (&conversion_obstack, p);
3856 /* Build a call to a global operator new. FNNAME is the name of the
3857 operator (either "operator new" or "operator new[]") and ARGS are
3858 the arguments provided. This may change ARGS. *SIZE points to the
3859 total number of bytes required by the allocation, and is updated if
3860 that is changed here. *COOKIE_SIZE is non-NULL if a cookie should
3861 be used. If this function determines that no cookie should be
3862 used, after all, *COOKIE_SIZE is set to NULL_TREE. If FN is
3863 non-NULL, it will be set, upon return, to the allocation function
3867 build_operator_new_call (tree fnname, VEC(tree,gc) **args,
3868 tree *size, tree *cookie_size,
3872 struct z_candidate *candidates;
3873 struct z_candidate *cand;
3878 VEC_safe_insert (tree, gc, *args, 0, *size);
3879 *args = resolve_args (*args, tf_warning_or_error);
3881 return error_mark_node;
3887 If this lookup fails to find the name, or if the allocated type
3888 is not a class type, the allocation function's name is looked
3889 up in the global scope.
3891 we disregard block-scope declarations of "operator new". */
3892 fns = lookup_function_nonclass (fnname, *args, /*block_p=*/false);
3894 /* Figure out what function is being called. */
3895 cand = perform_overload_resolution (fns, *args, &candidates, &any_viable_p);
3897 /* If no suitable function could be found, issue an error message
3901 print_error_for_call_failure (fns, *args, any_viable_p, candidates);
3902 return error_mark_node;
3905 /* If a cookie is required, add some extra space. Whether
3906 or not a cookie is required cannot be determined until
3907 after we know which function was called. */
3910 bool use_cookie = true;
3911 if (!abi_version_at_least (2))
3913 /* In G++ 3.2, the check was implemented incorrectly; it
3914 looked at the placement expression, rather than the
3915 type of the function. */
3916 if (VEC_length (tree, *args) == 2
3917 && same_type_p (TREE_TYPE (VEC_index (tree, *args, 1)),
3925 arg_types = TYPE_ARG_TYPES (TREE_TYPE (cand->fn));
3926 /* Skip the size_t parameter. */
3927 arg_types = TREE_CHAIN (arg_types);
3928 /* Check the remaining parameters (if any). */
3930 && TREE_CHAIN (arg_types) == void_list_node
3931 && same_type_p (TREE_VALUE (arg_types),
3935 /* If we need a cookie, adjust the number of bytes allocated. */
3938 /* Update the total size. */
3939 *size = size_binop (PLUS_EXPR, *size, *cookie_size);
3940 /* Update the argument list to reflect the adjusted size. */
3941 VEC_replace (tree, *args, 0, *size);
3944 *cookie_size = NULL_TREE;
3947 /* Tell our caller which function we decided to call. */
3951 /* Build the CALL_EXPR. */
3952 return build_over_call (cand, LOOKUP_NORMAL, tf_warning_or_error);
3955 /* Build a new call to operator(). This may change ARGS. */
3958 build_op_call_1 (tree obj, VEC(tree,gc) **args, tsubst_flags_t complain)
3960 struct z_candidate *candidates = 0, *cand;
3961 tree fns, convs, first_mem_arg = NULL_TREE;
3962 tree type = TREE_TYPE (obj);
3964 tree result = NULL_TREE;
3967 if (error_operand_p (obj))
3968 return error_mark_node;
3970 obj = prep_operand (obj);
3972 if (TYPE_PTRMEMFUNC_P (type))
3974 if (complain & tf_error)
3975 /* It's no good looking for an overloaded operator() on a
3976 pointer-to-member-function. */
3977 error ("pointer-to-member function %E cannot be called without an object; consider using .* or ->*", obj);
3978 return error_mark_node;
3981 if (TYPE_BINFO (type))
3983 fns = lookup_fnfields (TYPE_BINFO (type), ansi_opname (CALL_EXPR), 1);
3984 if (fns == error_mark_node)
3985 return error_mark_node;
3990 if (args != NULL && *args != NULL)
3992 *args = resolve_args (*args, complain);
3994 return error_mark_node;
3997 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3998 p = conversion_obstack_alloc (0);
4002 first_mem_arg = build_this (obj);
4004 add_candidates (BASELINK_FUNCTIONS (fns),
4005 first_mem_arg, *args, NULL_TREE,
4007 BASELINK_BINFO (fns), BASELINK_ACCESS_BINFO (fns),
4008 LOOKUP_NORMAL, &candidates);
4011 convs = lookup_conversions (type);
4013 for (; convs; convs = TREE_CHAIN (convs))
4015 tree fns = TREE_VALUE (convs);
4016 tree totype = TREE_TYPE (convs);
4018 if ((TREE_CODE (totype) == POINTER_TYPE
4019 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
4020 || (TREE_CODE (totype) == REFERENCE_TYPE
4021 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
4022 || (TREE_CODE (totype) == REFERENCE_TYPE
4023 && TREE_CODE (TREE_TYPE (totype)) == POINTER_TYPE
4024 && TREE_CODE (TREE_TYPE (TREE_TYPE (totype))) == FUNCTION_TYPE))
4025 for (; fns; fns = OVL_NEXT (fns))
4027 tree fn = OVL_CURRENT (fns);
4029 if (DECL_NONCONVERTING_P (fn))
4032 if (TREE_CODE (fn) == TEMPLATE_DECL)
4033 add_template_conv_candidate
4034 (&candidates, fn, obj, NULL_TREE, *args, totype,
4035 /*access_path=*/NULL_TREE,
4036 /*conversion_path=*/NULL_TREE);
4038 add_conv_candidate (&candidates, fn, obj, NULL_TREE,
4039 *args, /*conversion_path=*/NULL_TREE,
4040 /*access_path=*/NULL_TREE);
4044 candidates = splice_viable (candidates, pedantic, &any_viable_p);
4047 if (complain & tf_error)
4049 error ("no match for call to %<(%T) (%A)%>", TREE_TYPE (obj),
4050 build_tree_list_vec (*args));
4051 print_z_candidates (location_of (TREE_TYPE (obj)), candidates);
4053 result = error_mark_node;
4057 cand = tourney (candidates);
4060 if (complain & tf_error)
4062 error ("call of %<(%T) (%A)%> is ambiguous",
4063 TREE_TYPE (obj), build_tree_list_vec (*args));
4064 print_z_candidates (location_of (TREE_TYPE (obj)), candidates);
4066 result = error_mark_node;
4068 /* Since cand->fn will be a type, not a function, for a conversion
4069 function, we must be careful not to unconditionally look at
4071 else if (TREE_CODE (cand->fn) == FUNCTION_DECL
4072 && DECL_OVERLOADED_OPERATOR_P (cand->fn) == CALL_EXPR)
4073 result = build_over_call (cand, LOOKUP_NORMAL, complain);
4076 obj = convert_like_with_context (cand->convs[0], obj, cand->fn, -1,
4078 obj = convert_from_reference (obj);
4079 result = cp_build_function_call_vec (obj, args, complain);
4083 /* Free all the conversions we allocated. */
4084 obstack_free (&conversion_obstack, p);
4089 /* Wrapper for above. */
4092 build_op_call (tree obj, VEC(tree,gc) **args, tsubst_flags_t complain)
4095 bool subtime = timevar_cond_start (TV_OVERLOAD);
4096 ret = build_op_call_1 (obj, args, complain);
4097 timevar_cond_stop (TV_OVERLOAD, subtime);
4102 op_error (enum tree_code code, enum tree_code code2,
4103 tree arg1, tree arg2, tree arg3, bool match)
4107 if (code == MODIFY_EXPR)
4108 opname = assignment_operator_name_info[code2].name;
4110 opname = operator_name_info[code].name;
4116 error ("ambiguous overload for ternary %<operator?:%> "
4117 "in %<%E ? %E : %E%>", arg1, arg2, arg3);
4119 error ("no match for ternary %<operator?:%> "
4120 "in %<%E ? %E : %E%>", arg1, arg2, arg3);
4123 case POSTINCREMENT_EXPR:
4124 case POSTDECREMENT_EXPR:
4126 error ("ambiguous overload for %<operator%s%> in %<%E%s%>",
4127 opname, arg1, opname);
4129 error ("no match for %<operator%s%> in %<%E%s%>",
4130 opname, arg1, opname);
4135 error ("ambiguous overload for %<operator[]%> in %<%E[%E]%>",
4138 error ("no match for %<operator[]%> in %<%E[%E]%>",
4145 error ("ambiguous overload for %qs in %<%s %E%>",
4146 opname, opname, arg1);
4148 error ("no match for %qs in %<%s %E%>",
4149 opname, opname, arg1);
4155 error ("ambiguous overload for %<operator%s%> in %<%E %s %E%>",
4156 opname, arg1, opname, arg2);
4158 error ("no match for %<operator%s%> in %<%E %s %E%>",
4159 opname, arg1, opname, arg2);
4162 error ("ambiguous overload for %<operator%s%> in %<%s%E%>",
4163 opname, opname, arg1);
4165 error ("no match for %<operator%s%> in %<%s%E%>",
4166 opname, opname, arg1);
4171 /* Return the implicit conversion sequence that could be used to
4172 convert E1 to E2 in [expr.cond]. */
4175 conditional_conversion (tree e1, tree e2)
4177 tree t1 = non_reference (TREE_TYPE (e1));
4178 tree t2 = non_reference (TREE_TYPE (e2));
4184 If E2 is an lvalue: E1 can be converted to match E2 if E1 can be
4185 implicitly converted (clause _conv_) to the type "lvalue reference to
4186 T2", subject to the constraint that in the conversion the
4187 reference must bind directly (_dcl.init.ref_) to an lvalue. */
4188 if (real_lvalue_p (e2))
4190 conv = implicit_conversion (build_reference_type (t2),
4194 LOOKUP_NO_TEMP_BIND|LOOKUP_NO_RVAL_BIND
4195 |LOOKUP_ONLYCONVERTING);
4202 If E1 and E2 have class type, and the underlying class types are
4203 the same or one is a base class of the other: E1 can be converted
4204 to match E2 if the class of T2 is the same type as, or a base
4205 class of, the class of T1, and the cv-qualification of T2 is the
4206 same cv-qualification as, or a greater cv-qualification than, the
4207 cv-qualification of T1. If the conversion is applied, E1 is
4208 changed to an rvalue of type T2 that still refers to the original
4209 source class object (or the appropriate subobject thereof). */
4210 if (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
4211 && ((good_base = DERIVED_FROM_P (t2, t1)) || DERIVED_FROM_P (t1, t2)))
4213 if (good_base && at_least_as_qualified_p (t2, t1))
4215 conv = build_identity_conv (t1, e1);
4216 if (!same_type_p (TYPE_MAIN_VARIANT (t1),
4217 TYPE_MAIN_VARIANT (t2)))
4218 conv = build_conv (ck_base, t2, conv);
4220 conv = build_conv (ck_rvalue, t2, conv);
4229 Otherwise: E1 can be converted to match E2 if E1 can be implicitly
4230 converted to the type that expression E2 would have if E2 were
4231 converted to an rvalue (or the type it has, if E2 is an rvalue). */
4232 return implicit_conversion (t2, t1, e1, /*c_cast_p=*/false,
4236 /* Implement [expr.cond]. ARG1, ARG2, and ARG3 are the three
4237 arguments to the conditional expression. */
4240 build_conditional_expr_1 (tree arg1, tree arg2, tree arg3,
4241 tsubst_flags_t complain)
4245 tree result = NULL_TREE;
4246 tree result_type = NULL_TREE;
4247 bool lvalue_p = true;
4248 struct z_candidate *candidates = 0;
4249 struct z_candidate *cand;
4252 /* As a G++ extension, the second argument to the conditional can be
4253 omitted. (So that `a ? : c' is roughly equivalent to `a ? a :
4254 c'.) If the second operand is omitted, make sure it is
4255 calculated only once. */
4258 if (complain & tf_error)
4259 pedwarn (input_location, OPT_pedantic,
4260 "ISO C++ forbids omitting the middle term of a ?: expression");
4262 /* Make sure that lvalues remain lvalues. See g++.oliva/ext1.C. */
4263 if (real_lvalue_p (arg1))
4264 arg2 = arg1 = stabilize_reference (arg1);
4266 arg2 = arg1 = save_expr (arg1);
4271 The first expression is implicitly converted to bool (clause
4273 arg1 = perform_implicit_conversion_flags (boolean_type_node, arg1, complain,
4276 /* If something has already gone wrong, just pass that fact up the
4278 if (error_operand_p (arg1)
4279 || error_operand_p (arg2)
4280 || error_operand_p (arg3))
4281 return error_mark_node;
4285 If either the second or the third operand has type (possibly
4286 cv-qualified) void, then the lvalue-to-rvalue (_conv.lval_),
4287 array-to-pointer (_conv.array_), and function-to-pointer
4288 (_conv.func_) standard conversions are performed on the second
4289 and third operands. */
4290 arg2_type = unlowered_expr_type (arg2);
4291 arg3_type = unlowered_expr_type (arg3);
4292 if (VOID_TYPE_P (arg2_type) || VOID_TYPE_P (arg3_type))
4294 /* Do the conversions. We don't these for `void' type arguments
4295 since it can't have any effect and since decay_conversion
4296 does not handle that case gracefully. */
4297 if (!VOID_TYPE_P (arg2_type))
4298 arg2 = decay_conversion (arg2);
4299 if (!VOID_TYPE_P (arg3_type))
4300 arg3 = decay_conversion (arg3);
4301 arg2_type = TREE_TYPE (arg2);
4302 arg3_type = TREE_TYPE (arg3);
4306 One of the following shall hold:
4308 --The second or the third operand (but not both) is a
4309 throw-expression (_except.throw_); the result is of the
4310 type of the other and is an rvalue.
4312 --Both the second and the third operands have type void; the
4313 result is of type void and is an rvalue.
4315 We must avoid calling force_rvalue for expressions of type
4316 "void" because it will complain that their value is being
4318 if (TREE_CODE (arg2) == THROW_EXPR
4319 && TREE_CODE (arg3) != THROW_EXPR)
4321 if (!VOID_TYPE_P (arg3_type))
4323 arg3 = force_rvalue (arg3, complain);
4324 if (arg3 == error_mark_node)
4325 return error_mark_node;
4327 arg3_type = TREE_TYPE (arg3);
4328 result_type = arg3_type;
4330 else if (TREE_CODE (arg2) != THROW_EXPR
4331 && TREE_CODE (arg3) == THROW_EXPR)
4333 if (!VOID_TYPE_P (arg2_type))
4335 arg2 = force_rvalue (arg2, complain);
4336 if (arg2 == error_mark_node)
4337 return error_mark_node;
4339 arg2_type = TREE_TYPE (arg2);
4340 result_type = arg2_type;
4342 else if (VOID_TYPE_P (arg2_type) && VOID_TYPE_P (arg3_type))
4343 result_type = void_type_node;
4346 if (complain & tf_error)
4348 if (VOID_TYPE_P (arg2_type))
4349 error ("second operand to the conditional operator "
4350 "is of type %<void%>, "
4351 "but the third operand is neither a throw-expression "
4352 "nor of type %<void%>");
4354 error ("third operand to the conditional operator "
4355 "is of type %<void%>, "
4356 "but the second operand is neither a throw-expression "
4357 "nor of type %<void%>");
4359 return error_mark_node;
4363 goto valid_operands;
4367 Otherwise, if the second and third operand have different types,
4368 and either has (possibly cv-qualified) class type, an attempt is
4369 made to convert each of those operands to the type of the other. */
4370 else if (!same_type_p (arg2_type, arg3_type)
4371 && (CLASS_TYPE_P (arg2_type) || CLASS_TYPE_P (arg3_type)))
4376 /* Get the high-water mark for the CONVERSION_OBSTACK. */
4377 p = conversion_obstack_alloc (0);
4379 conv2 = conditional_conversion (arg2, arg3);
4380 conv3 = conditional_conversion (arg3, arg2);
4384 If both can be converted, or one can be converted but the
4385 conversion is ambiguous, the program is ill-formed. If
4386 neither can be converted, the operands are left unchanged and
4387 further checking is performed as described below. If exactly
4388 one conversion is possible, that conversion is applied to the
4389 chosen operand and the converted operand is used in place of
4390 the original operand for the remainder of this section. */
4391 if ((conv2 && !conv2->bad_p
4392 && conv3 && !conv3->bad_p)
4393 || (conv2 && conv2->kind == ck_ambig)
4394 || (conv3 && conv3->kind == ck_ambig))
4396 error ("operands to ?: have different types %qT and %qT",
4397 arg2_type, arg3_type);
4398 result = error_mark_node;
4400 else if (conv2 && (!conv2->bad_p || !conv3))
4402 arg2 = convert_like (conv2, arg2, complain);
4403 arg2 = convert_from_reference (arg2);
4404 arg2_type = TREE_TYPE (arg2);
4405 /* Even if CONV2 is a valid conversion, the result of the
4406 conversion may be invalid. For example, if ARG3 has type
4407 "volatile X", and X does not have a copy constructor
4408 accepting a "volatile X&", then even if ARG2 can be
4409 converted to X, the conversion will fail. */
4410 if (error_operand_p (arg2))
4411 result = error_mark_node;
4413 else if (conv3 && (!conv3->bad_p || !conv2))
4415 arg3 = convert_like (conv3, arg3, complain);
4416 arg3 = convert_from_reference (arg3);
4417 arg3_type = TREE_TYPE (arg3);
4418 if (error_operand_p (arg3))
4419 result = error_mark_node;
4422 /* Free all the conversions we allocated. */
4423 obstack_free (&conversion_obstack, p);
4428 /* If, after the conversion, both operands have class type,
4429 treat the cv-qualification of both operands as if it were the
4430 union of the cv-qualification of the operands.
4432 The standard is not clear about what to do in this
4433 circumstance. For example, if the first operand has type
4434 "const X" and the second operand has a user-defined
4435 conversion to "volatile X", what is the type of the second
4436 operand after this step? Making it be "const X" (matching
4437 the first operand) seems wrong, as that discards the
4438 qualification without actually performing a copy. Leaving it
4439 as "volatile X" seems wrong as that will result in the
4440 conditional expression failing altogether, even though,
4441 according to this step, the one operand could be converted to
4442 the type of the other. */
4443 if ((conv2 || conv3)
4444 && CLASS_TYPE_P (arg2_type)
4445 && cp_type_quals (arg2_type) != cp_type_quals (arg3_type))
4446 arg2_type = arg3_type =
4447 cp_build_qualified_type (arg2_type,
4448 cp_type_quals (arg2_type)
4449 | cp_type_quals (arg3_type));
4454 If the second and third operands are lvalues and have the same
4455 type, the result is of that type and is an lvalue. */
4456 if (real_lvalue_p (arg2)
4457 && real_lvalue_p (arg3)
4458 && same_type_p (arg2_type, arg3_type))
4460 result_type = arg2_type;
4461 arg2 = mark_lvalue_use (arg2);
4462 arg3 = mark_lvalue_use (arg3);
4463 goto valid_operands;
4468 Otherwise, the result is an rvalue. If the second and third
4469 operand do not have the same type, and either has (possibly
4470 cv-qualified) class type, overload resolution is used to
4471 determine the conversions (if any) to be applied to the operands
4472 (_over.match.oper_, _over.built_). */
4474 if (!same_type_p (arg2_type, arg3_type)
4475 && (CLASS_TYPE_P (arg2_type) || CLASS_TYPE_P (arg3_type)))
4481 /* Rearrange the arguments so that add_builtin_candidate only has
4482 to know about two args. In build_builtin_candidate, the
4483 arguments are unscrambled. */
4487 add_builtin_candidates (&candidates,
4490 ansi_opname (COND_EXPR),
4496 If the overload resolution fails, the program is
4498 candidates = splice_viable (candidates, pedantic, &any_viable_p);
4501 if (complain & tf_error)
4503 op_error (COND_EXPR, NOP_EXPR, arg1, arg2, arg3, FALSE);
4504 print_z_candidates (location_of (arg1), candidates);
4506 return error_mark_node;
4508 cand = tourney (candidates);
4511 if (complain & tf_error)
4513 op_error (COND_EXPR, NOP_EXPR, arg1, arg2, arg3, FALSE);
4514 print_z_candidates (location_of (arg1), candidates);
4516 return error_mark_node;
4521 Otherwise, the conversions thus determined are applied, and
4522 the converted operands are used in place of the original
4523 operands for the remainder of this section. */
4524 conv = cand->convs[0];
4525 arg1 = convert_like (conv, arg1, complain);
4526 conv = cand->convs[1];
4527 arg2 = convert_like (conv, arg2, complain);
4528 arg2_type = TREE_TYPE (arg2);
4529 conv = cand->convs[2];
4530 arg3 = convert_like (conv, arg3, complain);
4531 arg3_type = TREE_TYPE (arg3);
4536 Lvalue-to-rvalue (_conv.lval_), array-to-pointer (_conv.array_),
4537 and function-to-pointer (_conv.func_) standard conversions are
4538 performed on the second and third operands.
4540 We need to force the lvalue-to-rvalue conversion here for class types,
4541 so we get TARGET_EXPRs; trying to deal with a COND_EXPR of class rvalues
4542 that isn't wrapped with a TARGET_EXPR plays havoc with exception
4545 arg2 = force_rvalue (arg2, complain);
4546 if (!CLASS_TYPE_P (arg2_type))
4547 arg2_type = TREE_TYPE (arg2);
4549 arg3 = force_rvalue (arg3, complain);
4550 if (!CLASS_TYPE_P (arg3_type))
4551 arg3_type = TREE_TYPE (arg3);
4553 if (arg2 == error_mark_node || arg3 == error_mark_node)
4554 return error_mark_node;
4558 After those conversions, one of the following shall hold:
4560 --The second and third operands have the same type; the result is of
4562 if (same_type_p (arg2_type, arg3_type))
4563 result_type = arg2_type;
4566 --The second and third operands have arithmetic or enumeration
4567 type; the usual arithmetic conversions are performed to bring
4568 them to a common type, and the result is of that type. */
4569 else if ((ARITHMETIC_TYPE_P (arg2_type)
4570 || UNSCOPED_ENUM_P (arg2_type))
4571 && (ARITHMETIC_TYPE_P (arg3_type)
4572 || UNSCOPED_ENUM_P (arg3_type)))
4574 /* In this case, there is always a common type. */
4575 result_type = type_after_usual_arithmetic_conversions (arg2_type,
4577 do_warn_double_promotion (result_type, arg2_type, arg3_type,
4578 "implicit conversion from %qT to %qT to "
4579 "match other result of conditional",
4582 if (TREE_CODE (arg2_type) == ENUMERAL_TYPE
4583 && TREE_CODE (arg3_type) == ENUMERAL_TYPE)
4585 if (complain & tf_warning)
4587 "enumeral mismatch in conditional expression: %qT vs %qT",
4588 arg2_type, arg3_type);
4590 else if (extra_warnings
4591 && ((TREE_CODE (arg2_type) == ENUMERAL_TYPE
4592 && !same_type_p (arg3_type, type_promotes_to (arg2_type)))
4593 || (TREE_CODE (arg3_type) == ENUMERAL_TYPE
4594 && !same_type_p (arg2_type, type_promotes_to (arg3_type)))))
4596 if (complain & tf_warning)
4598 "enumeral and non-enumeral type in conditional expression");
4601 arg2 = perform_implicit_conversion (result_type, arg2, complain);
4602 arg3 = perform_implicit_conversion (result_type, arg3, complain);
4606 --The second and third operands have pointer type, or one has
4607 pointer type and the other is a null pointer constant; pointer
4608 conversions (_conv.ptr_) and qualification conversions
4609 (_conv.qual_) are performed to bring them to their composite
4610 pointer type (_expr.rel_). The result is of the composite
4613 --The second and third operands have pointer to member type, or
4614 one has pointer to member type and the other is a null pointer
4615 constant; pointer to member conversions (_conv.mem_) and
4616 qualification conversions (_conv.qual_) are performed to bring
4617 them to a common type, whose cv-qualification shall match the
4618 cv-qualification of either the second or the third operand.
4619 The result is of the common type. */
4620 else if ((null_ptr_cst_p (arg2)
4621 && (TYPE_PTR_P (arg3_type) || TYPE_PTR_TO_MEMBER_P (arg3_type)))
4622 || (null_ptr_cst_p (arg3)
4623 && (TYPE_PTR_P (arg2_type) || TYPE_PTR_TO_MEMBER_P (arg2_type)))
4624 || (TYPE_PTR_P (arg2_type) && TYPE_PTR_P (arg3_type))
4625 || (TYPE_PTRMEM_P (arg2_type) && TYPE_PTRMEM_P (arg3_type))
4626 || (TYPE_PTRMEMFUNC_P (arg2_type) && TYPE_PTRMEMFUNC_P (arg3_type)))
4628 result_type = composite_pointer_type (arg2_type, arg3_type, arg2,
4629 arg3, CPO_CONDITIONAL_EXPR,
4631 if (result_type == error_mark_node)
4632 return error_mark_node;
4633 arg2 = perform_implicit_conversion (result_type, arg2, complain);
4634 arg3 = perform_implicit_conversion (result_type, arg3, complain);
4639 if (complain & tf_error)
4640 error ("operands to ?: have different types %qT and %qT",
4641 arg2_type, arg3_type);
4642 return error_mark_node;
4646 result = build3 (COND_EXPR, result_type, arg1, arg2, arg3);
4647 if (!cp_unevaluated_operand)
4648 /* Avoid folding within decltype (c++/42013) and noexcept. */
4649 result = fold_if_not_in_template (result);
4651 /* We can't use result_type below, as fold might have returned a
4656 /* Expand both sides into the same slot, hopefully the target of
4657 the ?: expression. We used to check for TARGET_EXPRs here,
4658 but now we sometimes wrap them in NOP_EXPRs so the test would
4660 if (CLASS_TYPE_P (TREE_TYPE (result)))
4661 result = get_target_expr (result);
4662 /* If this expression is an rvalue, but might be mistaken for an
4663 lvalue, we must add a NON_LVALUE_EXPR. */
4664 result = rvalue (result);
4670 /* Wrapper for above. */
4673 build_conditional_expr (tree arg1, tree arg2, tree arg3,
4674 tsubst_flags_t complain)
4677 bool subtime = timevar_cond_start (TV_OVERLOAD);
4678 ret = build_conditional_expr_1 (arg1, arg2, arg3, complain);
4679 timevar_cond_stop (TV_OVERLOAD, subtime);
4683 /* OPERAND is an operand to an expression. Perform necessary steps
4684 required before using it. If OPERAND is NULL_TREE, NULL_TREE is
4688 prep_operand (tree operand)
4692 if (CLASS_TYPE_P (TREE_TYPE (operand))
4693 && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (operand)))
4694 /* Make sure the template type is instantiated now. */
4695 instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (operand)));
4701 /* Add each of the viable functions in FNS (a FUNCTION_DECL or
4702 OVERLOAD) to the CANDIDATES, returning an updated list of
4703 CANDIDATES. The ARGS are the arguments provided to the call;
4704 if FIRST_ARG is non-null it is the implicit object argument,
4705 otherwise the first element of ARGS is used if needed. The
4706 EXPLICIT_TARGS are explicit template arguments provided.
4707 TEMPLATE_ONLY is true if only template functions should be
4708 considered. CONVERSION_PATH, ACCESS_PATH, and FLAGS are as for
4709 add_function_candidate. */
4712 add_candidates (tree fns, tree first_arg, const VEC(tree,gc) *args,
4714 tree explicit_targs, bool template_only,
4715 tree conversion_path, tree access_path,
4717 struct z_candidate **candidates)
4720 const VEC(tree,gc) *non_static_args;
4721 bool check_list_ctor;
4722 bool check_converting;
4723 unification_kind_t strict;
4729 /* Precalculate special handling of constructors and conversion ops. */
4730 fn = OVL_CURRENT (fns);
4731 if (DECL_CONV_FN_P (fn))
4733 check_list_ctor = false;
4734 check_converting = !!(flags & LOOKUP_ONLYCONVERTING);
4735 if (flags & LOOKUP_NO_CONVERSION)
4736 /* We're doing return_type(x). */
4737 strict = DEDUCE_CONV;
4739 /* We're doing x.operator return_type(). */
4740 strict = DEDUCE_EXACT;
4741 /* [over.match.funcs] For conversion functions, the function
4742 is considered to be a member of the class of the implicit
4743 object argument for the purpose of defining the type of
4744 the implicit object parameter. */
4745 ctype = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (first_arg)));
4749 if (DECL_CONSTRUCTOR_P (fn))
4751 check_list_ctor = !!(flags & LOOKUP_LIST_ONLY);
4752 check_converting = !!(flags & LOOKUP_ONLYCONVERTING);
4756 check_list_ctor = false;
4757 check_converting = false;
4759 strict = DEDUCE_CALL;
4760 ctype = conversion_path ? BINFO_TYPE (conversion_path) : NULL_TREE;
4764 non_static_args = args;
4766 /* Delay creating the implicit this parameter until it is needed. */
4767 non_static_args = NULL;
4769 for (; fns; fns = OVL_NEXT (fns))
4772 const VEC(tree,gc) *fn_args;
4774 fn = OVL_CURRENT (fns);
4776 if (check_converting && DECL_NONCONVERTING_P (fn))
4778 if (check_list_ctor && !is_list_ctor (fn))
4781 /* Figure out which set of arguments to use. */
4782 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn))
4784 /* If this function is a non-static member and we didn't get an
4785 implicit object argument, move it out of args. */
4786 if (first_arg == NULL_TREE)
4790 VEC(tree,gc) *tempvec
4791 = VEC_alloc (tree, gc, VEC_length (tree, args) - 1);
4792 for (ix = 1; VEC_iterate (tree, args, ix, arg); ++ix)
4793 VEC_quick_push (tree, tempvec, arg);
4794 non_static_args = tempvec;
4795 first_arg = build_this (VEC_index (tree, args, 0));
4798 fn_first_arg = first_arg;
4799 fn_args = non_static_args;
4803 /* Otherwise, just use the list of arguments provided. */
4804 fn_first_arg = NULL_TREE;
4808 if (TREE_CODE (fn) == TEMPLATE_DECL)
4809 add_template_candidate (candidates,
4820 else if (!template_only)
4821 add_function_candidate (candidates,
4832 /* Even unsigned enum types promote to signed int. We don't want to
4833 issue -Wsign-compare warnings for this case. Here ORIG_ARG is the
4834 original argument and ARG is the argument after any conversions
4835 have been applied. We set TREE_NO_WARNING if we have added a cast
4836 from an unsigned enum type to a signed integer type. */
4839 avoid_sign_compare_warnings (tree orig_arg, tree arg)
4841 if (orig_arg != NULL_TREE
4844 && TREE_CODE (TREE_TYPE (orig_arg)) == ENUMERAL_TYPE
4845 && TYPE_UNSIGNED (TREE_TYPE (orig_arg))
4846 && INTEGRAL_TYPE_P (TREE_TYPE (arg))
4847 && !TYPE_UNSIGNED (TREE_TYPE (arg)))
4848 TREE_NO_WARNING (arg) = 1;
4852 build_new_op_1 (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
4853 tree *overload, tsubst_flags_t complain)
4855 tree orig_arg1 = arg1;
4856 tree orig_arg2 = arg2;
4857 tree orig_arg3 = arg3;
4858 struct z_candidate *candidates = 0, *cand;
4859 VEC(tree,gc) *arglist;
4862 tree result = NULL_TREE;
4863 bool result_valid_p = false;
4864 enum tree_code code2 = NOP_EXPR;
4865 enum tree_code code_orig_arg1 = ERROR_MARK;
4866 enum tree_code code_orig_arg2 = ERROR_MARK;
4872 if (error_operand_p (arg1)
4873 || error_operand_p (arg2)
4874 || error_operand_p (arg3))
4875 return error_mark_node;
4877 if (code == MODIFY_EXPR)
4879 code2 = TREE_CODE (arg3);
4881 fnname = ansi_assopname (code2);
4884 fnname = ansi_opname (code);
4886 arg1 = prep_operand (arg1);
4892 case VEC_DELETE_EXPR:
4894 /* Use build_op_new_call and build_op_delete_call instead. */
4898 /* Use build_op_call instead. */
4901 case TRUTH_ORIF_EXPR:
4902 case TRUTH_ANDIF_EXPR:
4903 case TRUTH_AND_EXPR:
4905 /* These are saved for the sake of warn_logical_operator. */
4906 code_orig_arg1 = TREE_CODE (arg1);
4907 code_orig_arg2 = TREE_CODE (arg2);
4913 arg2 = prep_operand (arg2);
4914 arg3 = prep_operand (arg3);
4916 if (code == COND_EXPR)
4917 /* Use build_conditional_expr instead. */
4919 else if (! IS_OVERLOAD_TYPE (TREE_TYPE (arg1))
4920 && (! arg2 || ! IS_OVERLOAD_TYPE (TREE_TYPE (arg2))))
4923 if (code == POSTINCREMENT_EXPR || code == POSTDECREMENT_EXPR)
4924 arg2 = integer_zero_node;
4926 arglist = VEC_alloc (tree, gc, 3);
4927 VEC_quick_push (tree, arglist, arg1);
4928 if (arg2 != NULL_TREE)
4929 VEC_quick_push (tree, arglist, arg2);
4930 if (arg3 != NULL_TREE)
4931 VEC_quick_push (tree, arglist, arg3);
4933 /* Get the high-water mark for the CONVERSION_OBSTACK. */
4934 p = conversion_obstack_alloc (0);
4936 /* Add namespace-scope operators to the list of functions to
4938 add_candidates (lookup_function_nonclass (fnname, arglist, /*block_p=*/true),
4939 NULL_TREE, arglist, NULL_TREE,
4940 NULL_TREE, false, NULL_TREE, NULL_TREE,
4941 flags, &candidates);
4942 /* Add class-member operators to the candidate set. */
4943 if (CLASS_TYPE_P (TREE_TYPE (arg1)))
4947 fns = lookup_fnfields (TREE_TYPE (arg1), fnname, 1);
4948 if (fns == error_mark_node)
4950 result = error_mark_node;
4951 goto user_defined_result_ready;
4954 add_candidates (BASELINK_FUNCTIONS (fns),
4955 NULL_TREE, arglist, NULL_TREE,
4957 BASELINK_BINFO (fns),
4958 BASELINK_ACCESS_BINFO (fns),
4959 flags, &candidates);
4964 args[2] = NULL_TREE;
4966 add_builtin_candidates (&candidates, code, code2, fnname, args, flags);
4972 /* For these, the built-in candidates set is empty
4973 [over.match.oper]/3. We don't want non-strict matches
4974 because exact matches are always possible with built-in
4975 operators. The built-in candidate set for COMPONENT_REF
4976 would be empty too, but since there are no such built-in
4977 operators, we accept non-strict matches for them. */
4982 strict_p = pedantic;
4986 candidates = splice_viable (candidates, strict_p, &any_viable_p);
4991 case POSTINCREMENT_EXPR:
4992 case POSTDECREMENT_EXPR:
4993 /* Don't try anything fancy if we're not allowed to produce
4995 if (!(complain & tf_error))
4996 return error_mark_node;
4998 /* Look for an `operator++ (int)'. Pre-1985 C++ didn't
4999 distinguish between prefix and postfix ++ and
5000 operator++() was used for both, so we allow this with
5002 if (flags & LOOKUP_COMPLAIN)
5004 const char *msg = (flag_permissive)
5005 ? G_("no %<%D(int)%> declared for postfix %qs,"
5006 " trying prefix operator instead")
5007 : G_("no %<%D(int)%> declared for postfix %qs");
5008 permerror (input_location, msg, fnname,
5009 operator_name_info[code].name);
5012 if (!flag_permissive)
5013 return error_mark_node;
5015 if (code == POSTINCREMENT_EXPR)
5016 code = PREINCREMENT_EXPR;
5018 code = PREDECREMENT_EXPR;
5019 result = build_new_op_1 (code, flags, arg1, NULL_TREE, NULL_TREE,
5020 overload, complain);
5023 /* The caller will deal with these. */
5028 result_valid_p = true;
5032 if ((flags & LOOKUP_COMPLAIN) && (complain & tf_error))
5034 /* If one of the arguments of the operator represents
5035 an invalid use of member function pointer, try to report
5036 a meaningful error ... */
5037 if (invalid_nonstatic_memfn_p (arg1, tf_error)
5038 || invalid_nonstatic_memfn_p (arg2, tf_error)
5039 || invalid_nonstatic_memfn_p (arg3, tf_error))
5040 /* We displayed the error message. */;
5043 /* ... Otherwise, report the more generic
5044 "no matching operator found" error */
5045 op_error (code, code2, arg1, arg2, arg3, FALSE);
5046 print_z_candidates (input_location, candidates);
5049 result = error_mark_node;
5055 cand = tourney (candidates);
5058 if ((flags & LOOKUP_COMPLAIN) && (complain & tf_error))
5060 op_error (code, code2, arg1, arg2, arg3, TRUE);
5061 print_z_candidates (input_location, candidates);
5063 result = error_mark_node;
5065 else if (TREE_CODE (cand->fn) == FUNCTION_DECL)
5068 *overload = cand->fn;
5070 if (resolve_args (arglist, complain) == NULL)
5071 result = error_mark_node;
5073 result = build_over_call (cand, LOOKUP_NORMAL, complain);
5077 /* Give any warnings we noticed during overload resolution. */
5078 if (cand->warnings && (complain & tf_warning))
5080 struct candidate_warning *w;
5081 for (w = cand->warnings; w; w = w->next)
5082 joust (cand, w->loser, 1);
5085 /* Check for comparison of different enum types. */
5094 if (TREE_CODE (TREE_TYPE (arg1)) == ENUMERAL_TYPE
5095 && TREE_CODE (TREE_TYPE (arg2)) == ENUMERAL_TYPE
5096 && (TYPE_MAIN_VARIANT (TREE_TYPE (arg1))
5097 != TYPE_MAIN_VARIANT (TREE_TYPE (arg2)))
5098 && (complain & tf_warning))
5100 warning (OPT_Wenum_compare,
5101 "comparison between %q#T and %q#T",
5102 TREE_TYPE (arg1), TREE_TYPE (arg2));
5109 /* We need to strip any leading REF_BIND so that bitfields
5110 don't cause errors. This should not remove any important
5111 conversions, because builtins don't apply to class
5112 objects directly. */
5113 conv = cand->convs[0];
5114 if (conv->kind == ck_ref_bind)
5115 conv = conv->u.next;
5116 arg1 = convert_like (conv, arg1, complain);
5120 /* We need to call warn_logical_operator before
5121 converting arg2 to a boolean_type. */
5122 if (complain & tf_warning)
5123 warn_logical_operator (input_location, code, boolean_type_node,
5124 code_orig_arg1, arg1,
5125 code_orig_arg2, arg2);
5127 conv = cand->convs[1];
5128 if (conv->kind == ck_ref_bind)
5129 conv = conv->u.next;
5130 arg2 = convert_like (conv, arg2, complain);
5134 conv = cand->convs[2];
5135 if (conv->kind == ck_ref_bind)
5136 conv = conv->u.next;
5137 arg3 = convert_like (conv, arg3, complain);
5143 user_defined_result_ready:
5145 /* Free all the conversions we allocated. */
5146 obstack_free (&conversion_obstack, p);
5148 if (result || result_valid_p)
5152 avoid_sign_compare_warnings (orig_arg1, arg1);
5153 avoid_sign_compare_warnings (orig_arg2, arg2);
5154 avoid_sign_compare_warnings (orig_arg3, arg3);
5159 return cp_build_modify_expr (arg1, code2, arg2, complain);
5162 return cp_build_indirect_ref (arg1, RO_UNARY_STAR, complain);
5164 case TRUTH_ANDIF_EXPR:
5165 case TRUTH_ORIF_EXPR:
5166 case TRUTH_AND_EXPR:
5168 warn_logical_operator (input_location, code, boolean_type_node,
5169 code_orig_arg1, arg1, code_orig_arg2, arg2);
5174 case TRUNC_DIV_EXPR:
5185 case TRUNC_MOD_EXPR:
5189 return cp_build_binary_op (input_location, code, arg1, arg2, complain);
5191 case UNARY_PLUS_EXPR:
5194 case TRUTH_NOT_EXPR:
5195 case PREINCREMENT_EXPR:
5196 case POSTINCREMENT_EXPR:
5197 case PREDECREMENT_EXPR:
5198 case POSTDECREMENT_EXPR:
5201 return cp_build_unary_op (code, arg1, candidates != 0, complain);
5204 return cp_build_array_ref (input_location, arg1, arg2, complain);
5207 return build_m_component_ref (cp_build_indirect_ref (arg1, RO_NULL,
5211 /* The caller will deal with these. */
5223 /* Wrapper for above. */
5226 build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
5227 tree *overload, tsubst_flags_t complain)
5230 bool subtime = timevar_cond_start (TV_OVERLOAD);
5231 ret = build_new_op_1 (code, flags, arg1, arg2, arg3, overload, complain);
5232 timevar_cond_stop (TV_OVERLOAD, subtime);
5236 /* Returns true iff T, an element of an OVERLOAD chain, is a usual
5237 deallocation function (3.7.4.2 [basic.stc.dynamic.deallocation]). */
5240 non_placement_deallocation_fn_p (tree t)
5242 /* A template instance is never a usual deallocation function,
5243 regardless of its signature. */
5244 if (TREE_CODE (t) == TEMPLATE_DECL
5245 || primary_template_instantiation_p (t))
5248 /* If a class T has a member deallocation function named operator delete
5249 with exactly one parameter, then that function is a usual
5250 (non-placement) deallocation function. If class T does not declare
5251 such an operator delete but does declare a member deallocation
5252 function named operator delete with exactly two parameters, the second
5253 of which has type std::size_t (18.2), then this function is a usual
5254 deallocation function. */
5255 t = FUNCTION_ARG_CHAIN (t);
5256 if (t == void_list_node
5257 || (t && same_type_p (TREE_VALUE (t), size_type_node)
5258 && TREE_CHAIN (t) == void_list_node))
5263 /* Build a call to operator delete. This has to be handled very specially,
5264 because the restrictions on what signatures match are different from all
5265 other call instances. For a normal delete, only a delete taking (void *)
5266 or (void *, size_t) is accepted. For a placement delete, only an exact
5267 match with the placement new is accepted.
5269 CODE is either DELETE_EXPR or VEC_DELETE_EXPR.
5270 ADDR is the pointer to be deleted.
5271 SIZE is the size of the memory block to be deleted.
5272 GLOBAL_P is true if the delete-expression should not consider
5273 class-specific delete operators.
5274 PLACEMENT is the corresponding placement new call, or NULL_TREE.
5276 If this call to "operator delete" is being generated as part to
5277 deallocate memory allocated via a new-expression (as per [expr.new]
5278 which requires that if the initialization throws an exception then
5279 we call a deallocation function), then ALLOC_FN is the allocation
5283 build_op_delete_call (enum tree_code code, tree addr, tree size,
5284 bool global_p, tree placement,
5287 tree fn = NULL_TREE;
5288 tree fns, fnname, type, t;
5290 if (addr == error_mark_node)
5291 return error_mark_node;
5293 type = strip_array_types (TREE_TYPE (TREE_TYPE (addr)));
5295 fnname = ansi_opname (code);
5297 if (CLASS_TYPE_P (type)
5298 && COMPLETE_TYPE_P (complete_type (type))
5302 If the result of the lookup is ambiguous or inaccessible, or if
5303 the lookup selects a placement deallocation function, the
5304 program is ill-formed.
5306 Therefore, we ask lookup_fnfields to complain about ambiguity. */
5308 fns = lookup_fnfields (TYPE_BINFO (type), fnname, 1);
5309 if (fns == error_mark_node)
5310 return error_mark_node;
5315 if (fns == NULL_TREE)
5316 fns = lookup_name_nonclass (fnname);
5318 /* Strip const and volatile from addr. */
5319 addr = cp_convert (ptr_type_node, addr);
5323 /* "A declaration of a placement deallocation function matches the
5324 declaration of a placement allocation function if it has the same
5325 number of parameters and, after parameter transformations (8.3.5),
5326 all parameter types except the first are identical."
5328 So we build up the function type we want and ask instantiate_type
5329 to get it for us. */
5330 t = FUNCTION_ARG_CHAIN (alloc_fn);
5331 t = tree_cons (NULL_TREE, ptr_type_node, t);
5332 t = build_function_type (void_type_node, t);
5334 fn = instantiate_type (t, fns, tf_none);
5335 if (fn == error_mark_node)
5338 if (BASELINK_P (fn))
5339 fn = BASELINK_FUNCTIONS (fn);
5341 /* "If the lookup finds the two-parameter form of a usual deallocation
5342 function (3.7.4.2) and that function, considered as a placement
5343 deallocation function, would have been selected as a match for the
5344 allocation function, the program is ill-formed." */
5345 if (non_placement_deallocation_fn_p (fn))
5347 /* But if the class has an operator delete (void *), then that is
5348 the usual deallocation function, so we shouldn't complain
5349 about using the operator delete (void *, size_t). */
5350 for (t = BASELINK_P (fns) ? BASELINK_FUNCTIONS (fns) : fns;
5351 t; t = OVL_NEXT (t))
5353 tree elt = OVL_CURRENT (t);
5354 if (non_placement_deallocation_fn_p (elt)
5355 && FUNCTION_ARG_CHAIN (elt) == void_list_node)
5358 permerror (0, "non-placement deallocation function %q+D", fn);
5359 permerror (input_location, "selected for placement delete");
5364 /* "Any non-placement deallocation function matches a non-placement
5365 allocation function. If the lookup finds a single matching
5366 deallocation function, that function will be called; otherwise, no
5367 deallocation function will be called." */
5368 for (t = BASELINK_P (fns) ? BASELINK_FUNCTIONS (fns) : fns;
5369 t; t = OVL_NEXT (t))
5371 tree elt = OVL_CURRENT (t);
5372 if (non_placement_deallocation_fn_p (elt))
5375 /* "If a class T has a member deallocation function named
5376 operator delete with exactly one parameter, then that
5377 function is a usual (non-placement) deallocation
5378 function. If class T does not declare such an operator
5379 delete but does declare a member deallocation function named
5380 operator delete with exactly two parameters, the second of
5381 which has type std::size_t (18.2), then this function is a
5382 usual deallocation function."
5384 So (void*) beats (void*, size_t). */
5385 if (FUNCTION_ARG_CHAIN (fn) == void_list_node)
5390 /* If we have a matching function, call it. */
5393 gcc_assert (TREE_CODE (fn) == FUNCTION_DECL);
5395 /* If the FN is a member function, make sure that it is
5397 if (BASELINK_P (fns))
5398 perform_or_defer_access_check (BASELINK_BINFO (fns), fn, fn);
5400 /* Core issue 901: It's ok to new a type with deleted delete. */
5401 if (DECL_DELETED_FN (fn) && alloc_fn)
5406 /* The placement args might not be suitable for overload
5407 resolution at this point, so build the call directly. */
5408 int nargs = call_expr_nargs (placement);
5409 tree *argarray = XALLOCAVEC (tree, nargs);
5412 for (i = 1; i < nargs; i++)
5413 argarray[i] = CALL_EXPR_ARG (placement, i);
5415 return build_cxx_call (fn, nargs, argarray);
5420 VEC(tree,gc) *args = VEC_alloc (tree, gc, 2);
5421 VEC_quick_push (tree, args, addr);
5422 if (FUNCTION_ARG_CHAIN (fn) != void_list_node)
5423 VEC_quick_push (tree, args, size);
5424 ret = cp_build_function_call_vec (fn, &args, tf_warning_or_error);
5425 VEC_free (tree, gc, args);
5432 If no unambiguous matching deallocation function can be found,
5433 propagating the exception does not cause the object's memory to
5438 warning (0, "no corresponding deallocation function for %qD",
5443 error ("no suitable %<operator %s%> for %qT",
5444 operator_name_info[(int)code].name, type);
5445 return error_mark_node;
5448 /* If the current scope isn't allowed to access DECL along
5449 BASETYPE_PATH, give an error. The most derived class in
5450 BASETYPE_PATH is the one used to qualify DECL. DIAG_DECL is
5451 the declaration to use in the error diagnostic. */
5454 enforce_access (tree basetype_path, tree decl, tree diag_decl)
5456 gcc_assert (TREE_CODE (basetype_path) == TREE_BINFO);
5458 if (!accessible_p (basetype_path, decl, true))
5460 if (TREE_PRIVATE (decl))
5461 error ("%q+#D is private", diag_decl);
5462 else if (TREE_PROTECTED (decl))
5463 error ("%q+#D is protected", diag_decl);
5465 error ("%q+#D is inaccessible", diag_decl);
5466 error ("within this context");
5473 /* Initialize a temporary of type TYPE with EXPR. The FLAGS are a
5474 bitwise or of LOOKUP_* values. If any errors are warnings are
5475 generated, set *DIAGNOSTIC_FN to "error" or "warning",
5476 respectively. If no diagnostics are generated, set *DIAGNOSTIC_FN
5480 build_temp (tree expr, tree type, int flags,
5481 diagnostic_t *diagnostic_kind, tsubst_flags_t complain)
5486 savew = warningcount, savee = errorcount;
5487 args = make_tree_vector_single (expr);
5488 expr = build_special_member_call (NULL_TREE, complete_ctor_identifier,
5489 &args, type, flags, complain);
5490 release_tree_vector (args);
5491 if (warningcount > savew)
5492 *diagnostic_kind = DK_WARNING;
5493 else if (errorcount > savee)
5494 *diagnostic_kind = DK_ERROR;
5496 *diagnostic_kind = DK_UNSPECIFIED;
5500 /* Perform warnings about peculiar, but valid, conversions from/to NULL.
5501 EXPR is implicitly converted to type TOTYPE.
5502 FN and ARGNUM are used for diagnostics. */
5505 conversion_null_warnings (tree totype, tree expr, tree fn, int argnum)
5507 tree t = non_reference (totype);
5509 /* Issue warnings about peculiar, but valid, uses of NULL. */
5510 if (expr == null_node && TREE_CODE (t) != BOOLEAN_TYPE && ARITHMETIC_TYPE_P (t))
5513 warning_at (input_location, OPT_Wconversion_null,
5514 "passing NULL to non-pointer argument %P of %qD",
5517 warning_at (input_location, OPT_Wconversion_null,
5518 "converting to non-pointer type %qT from NULL", t);
5521 /* Issue warnings if "false" is converted to a NULL pointer */
5522 else if (expr == boolean_false_node && POINTER_TYPE_P (t))
5525 warning_at (input_location, OPT_Wconversion_null,
5526 "converting %<false%> to pointer type for argument %P "
5527 "of %qD", argnum, fn);
5529 warning_at (input_location, OPT_Wconversion_null,
5530 "converting %<false%> to pointer type %qT", t);
5534 /* Perform the conversions in CONVS on the expression EXPR. FN and
5535 ARGNUM are used for diagnostics. ARGNUM is zero based, -1
5536 indicates the `this' argument of a method. INNER is nonzero when
5537 being called to continue a conversion chain. It is negative when a
5538 reference binding will be applied, positive otherwise. If
5539 ISSUE_CONVERSION_WARNINGS is true, warnings about suspicious
5540 conversions will be emitted if appropriate. If C_CAST_P is true,
5541 this conversion is coming from a C-style cast; in that case,
5542 conversions to inaccessible bases are permitted. */
5545 convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
5546 int inner, bool issue_conversion_warnings,
5547 bool c_cast_p, tsubst_flags_t complain)
5549 tree totype = convs->type;
5550 diagnostic_t diag_kind;
5553 if (convs->bad_p && !(complain & tf_error))
5554 return error_mark_node;
5557 && convs->kind != ck_user
5558 && convs->kind != ck_list
5559 && convs->kind != ck_ambig
5560 && (convs->kind != ck_ref_bind
5561 || convs->user_conv_p)
5562 && convs->kind != ck_rvalue
5563 && convs->kind != ck_base)
5565 conversion *t = convs;
5567 /* Give a helpful error if this is bad because of excess braces. */
5568 if (BRACE_ENCLOSED_INITIALIZER_P (expr)
5569 && SCALAR_TYPE_P (totype)
5570 && CONSTRUCTOR_NELTS (expr) > 0
5571 && BRACE_ENCLOSED_INITIALIZER_P (CONSTRUCTOR_ELT (expr, 0)->value))
5572 permerror (input_location, "too many braces around initializer for %qT", totype);
5574 for (; t; t = t->u.next)
5576 if (t->kind == ck_user && t->cand->reason)
5578 permerror (input_location, "invalid user-defined conversion "
5579 "from %qT to %qT", TREE_TYPE (expr), totype);
5580 print_z_candidate ("candidate is:", t->cand);
5581 expr = convert_like_real (t, expr, fn, argnum, 1,
5582 /*issue_conversion_warnings=*/false,
5585 if (convs->kind == ck_ref_bind)
5586 return convert_to_reference (totype, expr, CONV_IMPLICIT,
5587 LOOKUP_NORMAL, NULL_TREE);
5589 return cp_convert (totype, expr);
5591 else if (t->kind == ck_user || !t->bad_p)
5593 expr = convert_like_real (t, expr, fn, argnum, 1,
5594 /*issue_conversion_warnings=*/false,
5599 else if (t->kind == ck_ambig)
5600 return convert_like_real (t, expr, fn, argnum, 1,
5601 /*issue_conversion_warnings=*/false,
5604 else if (t->kind == ck_identity)
5608 permerror (input_location, "invalid conversion from %qT to %qT",
5609 TREE_TYPE (expr), totype);
5611 permerror (DECL_SOURCE_LOCATION (fn),
5612 " initializing argument %P of %qD", argnum, fn);
5614 return cp_convert (totype, expr);
5617 if (issue_conversion_warnings && (complain & tf_warning))
5618 conversion_null_warnings (totype, expr, fn, argnum);
5620 switch (convs->kind)
5624 struct z_candidate *cand = convs->cand;
5625 tree convfn = cand->fn;
5628 /* If we're initializing from {}, it's value-initialization. */
5629 if (BRACE_ENCLOSED_INITIALIZER_P (expr)
5630 && CONSTRUCTOR_NELTS (expr) == 0
5631 && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype))
5633 expr = build_value_init (totype, complain);
5634 expr = get_target_expr_sfinae (expr, complain);
5635 if (expr != error_mark_node)
5636 TARGET_EXPR_LIST_INIT_P (expr) = true;
5640 expr = mark_rvalue_use (expr);
5642 /* When converting from an init list we consider explicit
5643 constructors, but actually trying to call one is an error. */
5644 if (DECL_NONCONVERTING_P (convfn) && DECL_CONSTRUCTOR_P (convfn)
5645 /* Unless we're calling it for value-initialization from an
5646 empty list, since that is handled separately in 8.5.4. */
5647 && cand->num_convs > 0)
5649 error ("converting to %qT from initializer list would use "
5650 "explicit constructor %qD", totype, convfn);
5653 /* Set user_conv_p on the argument conversions, so rvalue/base
5654 handling knows not to allow any more UDCs. */
5655 for (i = 0; i < cand->num_convs; ++i)
5656 cand->convs[i]->user_conv_p = true;
5658 expr = build_over_call (cand, LOOKUP_NORMAL, complain);
5660 /* If this is a constructor or a function returning an aggr type,
5661 we need to build up a TARGET_EXPR. */
5662 if (DECL_CONSTRUCTOR_P (convfn))
5664 expr = build_cplus_new (totype, expr, complain);
5666 /* Remember that this was list-initialization. */
5667 if (convs->check_narrowing && expr != error_mark_node)
5668 TARGET_EXPR_LIST_INIT_P (expr) = true;
5674 expr = mark_rvalue_use (expr);
5675 if (BRACE_ENCLOSED_INITIALIZER_P (expr))
5677 int nelts = CONSTRUCTOR_NELTS (expr);
5679 expr = build_value_init (totype, complain);
5680 else if (nelts == 1)
5681 expr = CONSTRUCTOR_ELT (expr, 0)->value;
5686 if (type_unknown_p (expr))
5687 expr = instantiate_type (totype, expr, complain);
5688 /* Convert a constant to its underlying value, unless we are
5689 about to bind it to a reference, in which case we need to
5690 leave it as an lvalue. */
5693 expr = decl_constant_value (expr);
5694 if (expr == null_node && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (totype))
5695 /* If __null has been converted to an integer type, we do not
5696 want to warn about uses of EXPR as an integer, rather than
5698 expr = build_int_cst (totype, 0);
5702 /* We leave bad_p off ck_ambig because overload resolution considers
5703 it valid, it just fails when we try to perform it. So we need to
5704 check complain here, too. */
5705 if (complain & tf_error)
5707 /* Call build_user_type_conversion again for the error. */
5708 build_user_type_conversion (totype, convs->u.expr, LOOKUP_NORMAL);
5710 error (" initializing argument %P of %q+D", argnum, fn);
5712 return error_mark_node;
5716 /* Conversion to std::initializer_list<T>. */
5717 tree elttype = TREE_VEC_ELT (CLASSTYPE_TI_ARGS (totype), 0);
5718 tree new_ctor = build_constructor (init_list_type_node, NULL);
5719 unsigned len = CONSTRUCTOR_NELTS (expr);
5720 tree array, val, field;
5721 VEC(constructor_elt,gc) *vec = NULL;
5724 /* Convert all the elements. */
5725 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (expr), ix, val)
5727 tree sub = convert_like_real (convs->u.list[ix], val, fn, argnum,
5728 1, false, false, complain);
5729 if (sub == error_mark_node)
5731 if (!BRACE_ENCLOSED_INITIALIZER_P (val))
5732 check_narrowing (TREE_TYPE (sub), val);
5733 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_ctor), NULL_TREE, sub);
5734 if (!TREE_CONSTANT (sub))
5735 TREE_CONSTANT (new_ctor) = false;
5737 /* Build up the array. */
5738 elttype = cp_build_qualified_type
5739 (elttype, cp_type_quals (elttype) | TYPE_QUAL_CONST);
5740 array = build_array_of_n_type (elttype, len);
5741 array = finish_compound_literal (array, new_ctor, complain);
5743 /* Build up the initializer_list object. */
5744 totype = complete_type (totype);
5745 field = next_initializable_field (TYPE_FIELDS (totype));
5746 CONSTRUCTOR_APPEND_ELT (vec, field, decay_conversion (array));
5747 field = next_initializable_field (DECL_CHAIN (field));
5748 CONSTRUCTOR_APPEND_ELT (vec, field, size_int (len));
5749 new_ctor = build_constructor (totype, vec);
5750 return get_target_expr (new_ctor);
5754 if (TREE_CODE (totype) == COMPLEX_TYPE)
5756 tree real = CONSTRUCTOR_ELT (expr, 0)->value;
5757 tree imag = CONSTRUCTOR_ELT (expr, 1)->value;
5758 real = perform_implicit_conversion (TREE_TYPE (totype),
5760 imag = perform_implicit_conversion (TREE_TYPE (totype),
5762 expr = build2 (COMPLEX_EXPR, totype, real, imag);
5763 return fold_if_not_in_template (expr);
5765 return get_target_expr (digest_init (totype, expr, complain));
5771 expr = convert_like_real (convs->u.next, expr, fn, argnum,
5772 convs->kind == ck_ref_bind ? -1 : 1,
5773 convs->kind == ck_ref_bind ? issue_conversion_warnings : false,
5776 if (expr == error_mark_node)
5777 return error_mark_node;
5779 switch (convs->kind)
5782 expr = decay_conversion (expr);
5783 if (! MAYBE_CLASS_TYPE_P (totype))
5785 /* Else fall through. */
5787 if (convs->kind == ck_base && !convs->need_temporary_p)
5789 /* We are going to bind a reference directly to a base-class
5790 subobject of EXPR. */
5791 /* Build an expression for `*((base*) &expr)'. */
5792 expr = cp_build_addr_expr (expr, complain);
5793 expr = convert_to_base (expr, build_pointer_type (totype),
5794 !c_cast_p, /*nonnull=*/true, complain);
5795 expr = cp_build_indirect_ref (expr, RO_IMPLICIT_CONVERSION, complain);
5799 /* Copy-initialization where the cv-unqualified version of the source
5800 type is the same class as, or a derived class of, the class of the
5801 destination [is treated as direct-initialization]. [dcl.init] */
5802 flags = LOOKUP_NORMAL|LOOKUP_ONLYCONVERTING;
5803 if (convs->user_conv_p)
5804 /* This conversion is being done in the context of a user-defined
5805 conversion (i.e. the second step of copy-initialization), so
5806 don't allow any more. */
5807 flags |= LOOKUP_NO_CONVERSION;
5808 if (convs->rvaluedness_matches_p)
5809 flags |= LOOKUP_PREFER_RVALUE;
5810 if (TREE_CODE (expr) == TARGET_EXPR
5811 && TARGET_EXPR_LIST_INIT_P (expr))
5812 /* Copy-list-initialization doesn't actually involve a copy. */
5814 expr = build_temp (expr, totype, flags, &diag_kind, complain);
5815 if (diag_kind && fn && complain)
5816 emit_diagnostic (diag_kind, DECL_SOURCE_LOCATION (fn), 0,
5817 " initializing argument %P of %qD", argnum, fn);
5818 return build_cplus_new (totype, expr, complain);
5822 tree ref_type = totype;
5824 if (convs->bad_p && !convs->u.next->bad_p)
5826 gcc_assert (TYPE_REF_IS_RVALUE (ref_type)
5827 && real_lvalue_p (expr));
5829 error ("cannot bind %qT lvalue to %qT",
5830 TREE_TYPE (expr), totype);
5832 error (" initializing argument %P of %q+D", argnum, fn);
5833 return error_mark_node;
5836 /* If necessary, create a temporary.
5838 VA_ARG_EXPR and CONSTRUCTOR expressions are special cases
5839 that need temporaries, even when their types are reference
5840 compatible with the type of reference being bound, so the
5841 upcoming call to cp_build_addr_expr doesn't fail. */
5842 if (convs->need_temporary_p
5843 || TREE_CODE (expr) == CONSTRUCTOR
5844 || TREE_CODE (expr) == VA_ARG_EXPR)
5846 /* Otherwise, a temporary of type "cv1 T1" is created and
5847 initialized from the initializer expression using the rules
5848 for a non-reference copy-initialization (8.5). */
5850 tree type = TREE_TYPE (ref_type);
5851 cp_lvalue_kind lvalue = real_lvalue_p (expr);
5853 gcc_assert (same_type_ignoring_top_level_qualifiers_p
5854 (type, convs->u.next->type));
5855 if (!CP_TYPE_CONST_NON_VOLATILE_P (type)
5856 && !TYPE_REF_IS_RVALUE (ref_type))
5858 /* If the reference is volatile or non-const, we
5859 cannot create a temporary. */
5860 if (lvalue & clk_bitfield)
5861 error ("cannot bind bitfield %qE to %qT",
5863 else if (lvalue & clk_packed)
5864 error ("cannot bind packed field %qE to %qT",
5867 error ("cannot bind rvalue %qE to %qT", expr, ref_type);
5868 return error_mark_node;
5870 /* If the source is a packed field, and we must use a copy
5871 constructor, then building the target expr will require
5872 binding the field to the reference parameter to the
5873 copy constructor, and we'll end up with an infinite
5874 loop. If we can use a bitwise copy, then we'll be
5876 if ((lvalue & clk_packed)
5877 && CLASS_TYPE_P (type)
5878 && type_has_nontrivial_copy_init (type))
5880 error ("cannot bind packed field %qE to %qT",
5882 return error_mark_node;
5884 if (lvalue & clk_bitfield)
5886 expr = convert_bitfield_to_declared_type (expr);
5887 expr = fold_convert (type, expr);
5889 expr = build_target_expr_with_type (expr, type, complain);
5892 /* Take the address of the thing to which we will bind the
5894 expr = cp_build_addr_expr (expr, complain);
5895 if (expr == error_mark_node)
5896 return error_mark_node;
5898 /* Convert it to a pointer to the type referred to by the
5899 reference. This will adjust the pointer if a derived to
5900 base conversion is being performed. */
5901 expr = cp_convert (build_pointer_type (TREE_TYPE (ref_type)),
5903 /* Convert the pointer to the desired reference type. */
5904 return build_nop (ref_type, expr);
5908 return decay_conversion (expr);
5911 /* Warn about deprecated conversion if appropriate. */
5912 string_conv_p (totype, expr, 1);
5917 expr = convert_to_base (expr, totype, !c_cast_p,
5918 /*nonnull=*/false, complain);
5919 return build_nop (totype, expr);
5922 return convert_ptrmem (totype, expr, /*allow_inverse_p=*/false,
5923 c_cast_p, complain);
5929 if (convs->check_narrowing)
5930 check_narrowing (totype, expr);
5932 if (issue_conversion_warnings && (complain & tf_warning))
5933 expr = convert_and_check (totype, expr);
5935 expr = convert (totype, expr);
5940 /* ARG is being passed to a varargs function. Perform any conversions
5941 required. Return the converted value. */
5944 convert_arg_to_ellipsis (tree arg)
5950 The lvalue-to-rvalue, array-to-pointer, and function-to-pointer
5951 standard conversions are performed. */
5952 arg = decay_conversion (arg);
5953 arg_type = TREE_TYPE (arg);
5956 If the argument has integral or enumeration type that is subject
5957 to the integral promotions (_conv.prom_), or a floating point
5958 type that is subject to the floating point promotion
5959 (_conv.fpprom_), the value of the argument is converted to the
5960 promoted type before the call. */
5961 if (TREE_CODE (arg_type) == REAL_TYPE
5962 && (TYPE_PRECISION (arg_type)
5963 < TYPE_PRECISION (double_type_node))
5964 && !DECIMAL_FLOAT_MODE_P (TYPE_MODE (arg_type)))
5966 if (warn_double_promotion && !c_inhibit_evaluation_warnings)
5967 warning (OPT_Wdouble_promotion,
5968 "implicit conversion from %qT to %qT when passing "
5969 "argument to function",
5970 arg_type, double_type_node);
5971 arg = convert_to_real (double_type_node, arg);
5973 else if (NULLPTR_TYPE_P (arg_type))
5974 arg = null_pointer_node;
5975 else if (INTEGRAL_OR_ENUMERATION_TYPE_P (arg_type))
5977 if (SCOPED_ENUM_P (arg_type) && !abi_version_at_least (6))
5979 warning (OPT_Wabi, "scoped enum %qT will not promote to an "
5980 "integral type in a future version of GCC", arg_type);
5981 arg = cp_convert (ENUM_UNDERLYING_TYPE (arg_type), arg);
5983 arg = perform_integral_promotions (arg);
5986 arg = require_complete_type (arg);
5987 arg_type = TREE_TYPE (arg);
5989 if (arg != error_mark_node
5990 /* In a template (or ill-formed code), we can have an incomplete type
5991 even after require_complete_type, in which case we don't know
5992 whether it has trivial copy or not. */
5993 && COMPLETE_TYPE_P (arg_type))
5995 /* Build up a real lvalue-to-rvalue conversion in case the
5996 copy constructor is trivial but not callable. */
5997 if (!cp_unevaluated_operand && CLASS_TYPE_P (arg_type))
5998 force_rvalue (arg, tf_warning_or_error);
6000 /* [expr.call] 5.2.2/7:
6001 Passing a potentially-evaluated argument of class type (Clause 9)
6002 with a non-trivial copy constructor or a non-trivial destructor
6003 with no corresponding parameter is conditionally-supported, with
6004 implementation-defined semantics.
6006 We used to just warn here and do a bitwise copy, but now
6007 cp_expr_size will abort if we try to do that.
6009 If the call appears in the context of a sizeof expression,
6010 it is not potentially-evaluated. */
6011 if (cp_unevaluated_operand == 0
6012 && (type_has_nontrivial_copy_init (arg_type)
6013 || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (arg_type)))
6014 error ("cannot pass objects of non-trivially-copyable "
6015 "type %q#T through %<...%>", arg_type);
6021 /* va_arg (EXPR, TYPE) is a builtin. Make sure it is not abused. */
6024 build_x_va_arg (tree expr, tree type)
6026 if (processing_template_decl)
6027 return build_min (VA_ARG_EXPR, type, expr);
6029 type = complete_type_or_else (type, NULL_TREE);
6031 if (expr == error_mark_node || !type)
6032 return error_mark_node;
6034 expr = mark_lvalue_use (expr);
6036 if (type_has_nontrivial_copy_init (type)
6037 || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)
6038 || TREE_CODE (type) == REFERENCE_TYPE)
6040 /* Remove reference types so we don't ICE later on. */
6041 tree type1 = non_reference (type);
6042 /* conditionally-supported behavior [expr.call] 5.2.2/7. */
6043 error ("cannot receive objects of non-trivially-copyable type %q#T "
6044 "through %<...%>; ", type);
6045 expr = convert (build_pointer_type (type1), null_node);
6046 expr = cp_build_indirect_ref (expr, RO_NULL, tf_warning_or_error);
6050 return build_va_arg (input_location, expr, type);
6053 /* TYPE has been given to va_arg. Apply the default conversions which
6054 would have happened when passed via ellipsis. Return the promoted
6055 type, or the passed type if there is no change. */
6058 cxx_type_promotes_to (tree type)
6062 /* Perform the array-to-pointer and function-to-pointer
6064 type = type_decays_to (type);
6066 promote = type_promotes_to (type);
6067 if (same_type_p (type, promote))
6073 /* ARG is a default argument expression being passed to a parameter of
6074 the indicated TYPE, which is a parameter to FN. PARMNUM is the
6075 zero-based argument number. Do any required conversions. Return
6076 the converted value. */
6078 static GTY(()) VEC(tree,gc) *default_arg_context;
6080 push_defarg_context (tree fn)
6081 { VEC_safe_push (tree, gc, default_arg_context, fn); }
6083 pop_defarg_context (void)
6084 { VEC_pop (tree, default_arg_context); }
6087 convert_default_arg (tree type, tree arg, tree fn, int parmnum)
6092 /* See through clones. */
6093 fn = DECL_ORIGIN (fn);
6095 /* Detect recursion. */
6096 FOR_EACH_VEC_ELT (tree, default_arg_context, i, t)
6099 error ("recursive evaluation of default argument for %q#D", fn);
6100 return error_mark_node;
6103 /* If the ARG is an unparsed default argument expression, the
6104 conversion cannot be performed. */
6105 if (TREE_CODE (arg) == DEFAULT_ARG)
6107 error ("call to %qD uses the default argument for parameter %P, which "
6108 "is not yet defined", fn, parmnum);
6109 return error_mark_node;
6112 push_defarg_context (fn);
6114 if (fn && DECL_TEMPLATE_INFO (fn))
6115 arg = tsubst_default_argument (fn, type, arg);
6121 The names in the expression are bound, and the semantic
6122 constraints are checked, at the point where the default
6123 expressions appears.
6125 we must not perform access checks here. */
6126 push_deferring_access_checks (dk_no_check);
6127 arg = break_out_target_exprs (arg);
6128 if (TREE_CODE (arg) == CONSTRUCTOR)
6130 arg = digest_init (type, arg, tf_warning_or_error);
6131 arg = convert_for_initialization (0, type, arg, LOOKUP_IMPLICIT,
6132 ICR_DEFAULT_ARGUMENT, fn, parmnum,
6133 tf_warning_or_error);
6137 /* We must make a copy of ARG, in case subsequent processing
6138 alters any part of it. For example, during gimplification a
6139 cast of the form (T) &X::f (where "f" is a member function)
6140 will lead to replacing the PTRMEM_CST for &X::f with a
6141 VAR_DECL. We can avoid the copy for constants, since they
6142 are never modified in place. */
6143 if (!CONSTANT_CLASS_P (arg))
6144 arg = unshare_expr (arg);
6145 arg = convert_for_initialization (0, type, arg, LOOKUP_IMPLICIT,
6146 ICR_DEFAULT_ARGUMENT, fn, parmnum,
6147 tf_warning_or_error);
6148 arg = convert_for_arg_passing (type, arg);
6150 pop_deferring_access_checks();
6152 pop_defarg_context ();
6157 /* Returns the type which will really be used for passing an argument of
6161 type_passed_as (tree type)
6163 /* Pass classes with copy ctors by invisible reference. */
6164 if (TREE_ADDRESSABLE (type))
6166 type = build_reference_type (type);
6167 /* There are no other pointers to this temporary. */
6168 type = cp_build_qualified_type (type, TYPE_QUAL_RESTRICT);
6170 else if (targetm.calls.promote_prototypes (type)
6171 && INTEGRAL_TYPE_P (type)
6172 && COMPLETE_TYPE_P (type)
6173 && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
6174 TYPE_SIZE (integer_type_node)))
6175 type = integer_type_node;
6180 /* Actually perform the appropriate conversion. */
6183 convert_for_arg_passing (tree type, tree val)
6187 /* If VAL is a bitfield, then -- since it has already been converted
6188 to TYPE -- it cannot have a precision greater than TYPE.
6190 If it has a smaller precision, we must widen it here. For
6191 example, passing "int f:3;" to a function expecting an "int" will
6192 not result in any conversion before this point.
6194 If the precision is the same we must not risk widening. For
6195 example, the COMPONENT_REF for a 32-bit "long long" bitfield will
6196 often have type "int", even though the C++ type for the field is
6197 "long long". If the value is being passed to a function
6198 expecting an "int", then no conversions will be required. But,
6199 if we call convert_bitfield_to_declared_type, the bitfield will
6200 be converted to "long long". */
6201 bitfield_type = is_bitfield_expr_with_lowered_type (val);
6203 && TYPE_PRECISION (TREE_TYPE (val)) < TYPE_PRECISION (type))
6204 val = convert_to_integer (TYPE_MAIN_VARIANT (bitfield_type), val);
6206 if (val == error_mark_node)
6208 /* Pass classes with copy ctors by invisible reference. */
6209 else if (TREE_ADDRESSABLE (type))
6210 val = build1 (ADDR_EXPR, build_reference_type (type), val);
6211 else if (targetm.calls.promote_prototypes (type)
6212 && INTEGRAL_TYPE_P (type)
6213 && COMPLETE_TYPE_P (type)
6214 && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
6215 TYPE_SIZE (integer_type_node)))
6216 val = perform_integral_promotions (val);
6217 if (warn_missing_format_attribute)
6219 tree rhstype = TREE_TYPE (val);
6220 const enum tree_code coder = TREE_CODE (rhstype);
6221 const enum tree_code codel = TREE_CODE (type);
6222 if ((codel == POINTER_TYPE || codel == REFERENCE_TYPE)
6224 && check_missing_format_attribute (type, rhstype))
6225 warning (OPT_Wmissing_format_attribute,
6226 "argument of function call might be a candidate for a format attribute");
6231 /* Returns true iff FN is a function with magic varargs, i.e. ones for
6232 which no conversions at all should be done. This is true for some
6233 builtins which don't act like normal functions. */
6236 magic_varargs_p (tree fn)
6238 if (DECL_BUILT_IN (fn))
6239 switch (DECL_FUNCTION_CODE (fn))
6241 case BUILT_IN_CLASSIFY_TYPE:
6242 case BUILT_IN_CONSTANT_P:
6243 case BUILT_IN_NEXT_ARG:
6244 case BUILT_IN_VA_START:
6248 return lookup_attribute ("type generic",
6249 TYPE_ATTRIBUTES (TREE_TYPE (fn))) != 0;
6255 /* Subroutine of the various build_*_call functions. Overload resolution
6256 has chosen a winning candidate CAND; build up a CALL_EXPR accordingly.
6257 ARGS is a TREE_LIST of the unconverted arguments to the call. FLAGS is a
6258 bitmask of various LOOKUP_* flags which apply to the call itself. */
6261 build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
6264 const VEC(tree,gc) *args = cand->args;
6265 tree first_arg = cand->first_arg;
6266 conversion **convs = cand->convs;
6268 tree parm = TYPE_ARG_TYPES (TREE_TYPE (fn));
6273 unsigned int arg_index = 0;
6277 bool already_used = false;
6279 /* In a template, there is no need to perform all of the work that
6280 is normally done. We are only interested in the type of the call
6281 expression, i.e., the return type of the function. Any semantic
6282 errors will be deferred until the template is instantiated. */
6283 if (processing_template_decl)
6287 const tree *argarray;
6290 return_type = TREE_TYPE (TREE_TYPE (fn));
6291 nargs = VEC_length (tree, args);
6292 if (first_arg == NULL_TREE)
6293 argarray = VEC_address (tree, CONST_CAST (VEC(tree,gc) *, args));
6301 alcarray = XALLOCAVEC (tree, nargs);
6302 alcarray[0] = first_arg;
6303 FOR_EACH_VEC_ELT (tree, args, ix, arg)
6304 alcarray[ix + 1] = arg;
6305 argarray = alcarray;
6307 expr = build_call_array_loc (input_location,
6308 return_type, build_addr_func (fn), nargs,
6310 if (TREE_THIS_VOLATILE (fn) && cfun)
6311 current_function_returns_abnormally = 1;
6312 return convert_from_reference (expr);
6315 /* Give any warnings we noticed during overload resolution. */
6316 if (cand->warnings && (complain & tf_warning))
6318 struct candidate_warning *w;
6319 for (w = cand->warnings; w; w = w->next)
6320 joust (cand, w->loser, 1);
6323 /* Make =delete work with SFINAE. */
6324 if (DECL_DELETED_FN (fn) && !(complain & tf_error))
6325 return error_mark_node;
6327 if (DECL_FUNCTION_MEMBER_P (fn))
6330 /* If FN is a template function, two cases must be considered.
6335 template <class T> void f();
6337 template <class T> struct B {
6341 struct C : A, B<int> {
6343 using B<int>::g; // #2
6346 In case #1 where `A::f' is a member template, DECL_ACCESS is
6347 recorded in the primary template but not in its specialization.
6348 We check access of FN using its primary template.
6350 In case #2, where `B<int>::g' has a DECL_TEMPLATE_INFO simply
6351 because it is a member of class template B, DECL_ACCESS is
6352 recorded in the specialization `B<int>::g'. We cannot use its
6353 primary template because `B<T>::g' and `B<int>::g' may have
6354 different access. */
6355 if (DECL_TEMPLATE_INFO (fn)
6356 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (fn)))
6357 access_fn = DECL_TI_TEMPLATE (fn);
6360 if (flags & LOOKUP_SPECULATIVE)
6362 if (!speculative_access_check (cand->access_path, access_fn, fn,
6363 !!(flags & LOOKUP_COMPLAIN)))
6364 return error_mark_node;
6367 perform_or_defer_access_check (cand->access_path, access_fn, fn);
6370 /* If we're checking for implicit delete, don't bother with argument
6372 if (flags & LOOKUP_SPECULATIVE)
6374 if (DECL_DELETED_FN (fn))
6376 if (flags & LOOKUP_COMPLAIN)
6378 return error_mark_node;
6380 if (cand->viable == 1)
6382 else if (!(flags & LOOKUP_COMPLAIN))
6383 /* Reject bad conversions now. */
6384 return error_mark_node;
6385 /* else continue to get conversion error. */
6388 /* Find maximum size of vector to hold converted arguments. */
6389 parmlen = list_length (parm);
6390 nargs = VEC_length (tree, args) + (first_arg != NULL_TREE ? 1 : 0);
6391 if (parmlen > nargs)
6393 argarray = XALLOCAVEC (tree, nargs);
6395 /* The implicit parameters to a constructor are not considered by overload
6396 resolution, and must be of the proper type. */
6397 if (DECL_CONSTRUCTOR_P (fn))
6399 if (first_arg != NULL_TREE)
6401 argarray[j++] = first_arg;
6402 first_arg = NULL_TREE;
6406 argarray[j++] = VEC_index (tree, args, arg_index);
6409 parm = TREE_CHAIN (parm);
6410 /* We should never try to call the abstract constructor. */
6411 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (fn));
6413 if (DECL_HAS_VTT_PARM_P (fn))
6415 argarray[j++] = VEC_index (tree, args, arg_index);
6417 parm = TREE_CHAIN (parm);
6420 /* Bypass access control for 'this' parameter. */
6421 else if (TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE)
6423 tree parmtype = TREE_VALUE (parm);
6424 tree arg = (first_arg != NULL_TREE
6426 : VEC_index (tree, args, arg_index));
6427 tree argtype = TREE_TYPE (arg);
6431 if (convs[i]->bad_p)
6433 if (complain & tf_error)
6434 permerror (input_location, "passing %qT as %<this%> argument of %q#D discards qualifiers",
6435 TREE_TYPE (argtype), fn);
6437 return error_mark_node;
6440 /* [class.mfct.nonstatic]: If a nonstatic member function of a class
6441 X is called for an object that is not of type X, or of a type
6442 derived from X, the behavior is undefined.
6444 So we can assume that anything passed as 'this' is non-null, and
6445 optimize accordingly. */
6446 gcc_assert (TREE_CODE (parmtype) == POINTER_TYPE);
6447 /* Convert to the base in which the function was declared. */
6448 gcc_assert (cand->conversion_path != NULL_TREE);
6449 converted_arg = build_base_path (PLUS_EXPR,
6451 cand->conversion_path,
6453 /* Check that the base class is accessible. */
6454 if (!accessible_base_p (TREE_TYPE (argtype),
6455 BINFO_TYPE (cand->conversion_path), true))
6456 error ("%qT is not an accessible base of %qT",
6457 BINFO_TYPE (cand->conversion_path),
6458 TREE_TYPE (argtype));
6459 /* If fn was found by a using declaration, the conversion path
6460 will be to the derived class, not the base declaring fn. We
6461 must convert from derived to base. */
6462 base_binfo = lookup_base (TREE_TYPE (TREE_TYPE (converted_arg)),
6463 TREE_TYPE (parmtype), ba_unique, NULL);
6464 converted_arg = build_base_path (PLUS_EXPR, converted_arg,
6467 argarray[j++] = converted_arg;
6468 parm = TREE_CHAIN (parm);
6469 if (first_arg != NULL_TREE)
6470 first_arg = NULL_TREE;
6477 gcc_assert (first_arg == NULL_TREE);
6478 for (; arg_index < VEC_length (tree, args) && parm;
6479 parm = TREE_CHAIN (parm), ++arg_index, ++i)
6481 tree type = TREE_VALUE (parm);
6482 tree arg = VEC_index (tree, args, arg_index);
6483 bool conversion_warning = true;
6487 /* If the argument is NULL and used to (implicitly) instantiate a
6488 template function (and bind one of the template arguments to
6489 the type of 'long int'), we don't want to warn about passing NULL
6490 to non-pointer argument.
6491 For example, if we have this template function:
6493 template<typename T> void func(T x) {}
6495 we want to warn (when -Wconversion is enabled) in this case:
6501 but not in this case:
6507 if (arg == null_node
6508 && DECL_TEMPLATE_INFO (fn)
6509 && cand->template_decl
6510 && !(flags & LOOKUP_EXPLICIT_TMPL_ARGS))
6511 conversion_warning = false;
6513 /* Warn about initializer_list deduction that isn't currently in the
6515 if (cxx_dialect > cxx98
6516 && flag_deduce_init_list
6517 && cand->template_decl
6518 && is_std_init_list (non_reference (type))
6519 && BRACE_ENCLOSED_INITIALIZER_P (arg))
6521 tree tmpl = TI_TEMPLATE (cand->template_decl);
6522 tree realparm = chain_index (j, DECL_ARGUMENTS (cand->fn));
6523 tree patparm = get_pattern_parm (realparm, tmpl);
6524 tree pattype = TREE_TYPE (patparm);
6525 if (PACK_EXPANSION_P (pattype))
6526 pattype = PACK_EXPANSION_PATTERN (pattype);
6527 pattype = non_reference (pattype);
6529 if (TREE_CODE (pattype) == TEMPLATE_TYPE_PARM
6530 && (cand->explicit_targs == NULL_TREE
6531 || (TREE_VEC_LENGTH (cand->explicit_targs)
6532 <= TEMPLATE_TYPE_IDX (pattype))))
6534 pedwarn (input_location, 0, "deducing %qT as %qT",
6535 non_reference (TREE_TYPE (patparm)),
6536 non_reference (type));
6537 pedwarn (input_location, 0, " in call to %q+D", cand->fn);
6538 pedwarn (input_location, 0,
6539 " (you can disable this with -fno-deduce-init-list)");
6543 val = convert_like_with_context (conv, arg, fn, i-is_method,
6546 : complain & (~tf_warning));
6548 val = convert_for_arg_passing (type, val);
6549 if (val == error_mark_node)
6550 return error_mark_node;
6552 argarray[j++] = val;
6555 /* Default arguments */
6556 for (; parm && parm != void_list_node; parm = TREE_CHAIN (parm), i++)
6557 argarray[j++] = convert_default_arg (TREE_VALUE (parm),
6558 TREE_PURPOSE (parm),
6561 for (; arg_index < VEC_length (tree, args); ++arg_index)
6563 tree a = VEC_index (tree, args, arg_index);
6564 if (magic_varargs_p (fn))
6565 /* Do no conversions for magic varargs. */
6566 a = mark_type_use (a);
6568 a = convert_arg_to_ellipsis (a);
6572 gcc_assert (j <= nargs);
6575 check_function_arguments (TREE_TYPE (fn), nargs, argarray);
6577 /* Avoid actually calling copy constructors and copy assignment operators,
6580 if (! flag_elide_constructors)
6581 /* Do things the hard way. */;
6582 else if (cand->num_convs == 1
6583 && (DECL_COPY_CONSTRUCTOR_P (fn)
6584 || DECL_MOVE_CONSTRUCTOR_P (fn)))
6587 tree arg = argarray[num_artificial_parms_for (fn)];
6589 bool trivial = trivial_fn_p (fn);
6591 /* Pull out the real argument, disregarding const-correctness. */
6593 while (CONVERT_EXPR_P (targ)
6594 || TREE_CODE (targ) == NON_LVALUE_EXPR)
6595 targ = TREE_OPERAND (targ, 0);
6596 if (TREE_CODE (targ) == ADDR_EXPR)
6598 targ = TREE_OPERAND (targ, 0);
6599 if (!same_type_ignoring_top_level_qualifiers_p
6600 (TREE_TYPE (TREE_TYPE (arg)), TREE_TYPE (targ)))
6609 arg = cp_build_indirect_ref (arg, RO_NULL, complain);
6611 /* [class.copy]: the copy constructor is implicitly defined even if
6612 the implementation elided its use. */
6613 if (!trivial || DECL_DELETED_FN (fn))
6616 already_used = true;
6619 /* If we're creating a temp and we already have one, don't create a
6620 new one. If we're not creating a temp but we get one, use
6621 INIT_EXPR to collapse the temp into our target. Otherwise, if the
6622 ctor is trivial, do a bitwise copy with a simple TARGET_EXPR for a
6623 temp or an INIT_EXPR otherwise. */
6625 if (integer_zerop (fa))
6627 if (TREE_CODE (arg) == TARGET_EXPR)
6630 return force_target_expr (DECL_CONTEXT (fn), arg, complain);
6632 else if (TREE_CODE (arg) == TARGET_EXPR || trivial)
6634 tree to = stabilize_reference (cp_build_indirect_ref (fa, RO_NULL,
6637 val = build2 (INIT_EXPR, DECL_CONTEXT (fn), to, arg);
6641 else if (DECL_OVERLOADED_OPERATOR_P (fn) == NOP_EXPR
6642 && trivial_fn_p (fn)
6643 && !DECL_DELETED_FN (fn))
6645 tree to = stabilize_reference
6646 (cp_build_indirect_ref (argarray[0], RO_NULL, complain));
6647 tree type = TREE_TYPE (to);
6648 tree as_base = CLASSTYPE_AS_BASE (type);
6649 tree arg = argarray[1];
6651 if (is_really_empty_class (type))
6653 /* Avoid copying empty classes. */
6654 val = build2 (COMPOUND_EXPR, void_type_node, to, arg);
6655 TREE_NO_WARNING (val) = 1;
6656 val = build2 (COMPOUND_EXPR, type, val, to);
6657 TREE_NO_WARNING (val) = 1;
6659 else if (tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (as_base)))
6661 arg = cp_build_indirect_ref (arg, RO_NULL, complain);
6662 val = build2 (MODIFY_EXPR, TREE_TYPE (to), to, arg);
6666 /* We must only copy the non-tail padding parts. */
6668 tree array_type, alias_set;
6670 arg2 = TYPE_SIZE_UNIT (as_base);
6671 arg0 = cp_build_addr_expr (to, complain);
6673 array_type = build_array_type (char_type_node,
6675 (size_binop (MINUS_EXPR,
6676 arg2, size_int (1))));
6677 alias_set = build_int_cst (build_pointer_type (type), 0);
6678 t = build2 (MODIFY_EXPR, void_type_node,
6679 build2 (MEM_REF, array_type, arg0, alias_set),
6680 build2 (MEM_REF, array_type, arg, alias_set));
6681 val = build2 (COMPOUND_EXPR, TREE_TYPE (to), t, to);
6682 TREE_NO_WARNING (val) = 1;
6687 else if (DECL_DESTRUCTOR_P (fn)
6688 && trivial_fn_p (fn)
6689 && !DECL_DELETED_FN (fn))
6690 return fold_convert (void_type_node, argarray[0]);
6691 /* FIXME handle trivial default constructor, too. */
6696 if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0)
6699 tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (argarray[0])),
6702 gcc_assert (binfo && binfo != error_mark_node);
6704 /* Warn about deprecated virtual functions now, since we're about
6705 to throw away the decl. */
6706 if (TREE_DEPRECATED (fn))
6707 warn_deprecated_use (fn, NULL_TREE);
6709 argarray[0] = build_base_path (PLUS_EXPR, argarray[0], binfo, 1);
6710 if (TREE_SIDE_EFFECTS (argarray[0]))
6711 argarray[0] = save_expr (argarray[0]);
6712 t = build_pointer_type (TREE_TYPE (fn));
6713 if (DECL_CONTEXT (fn) && TYPE_JAVA_INTERFACE (DECL_CONTEXT (fn)))
6714 fn = build_java_interface_fn_ref (fn, argarray[0]);
6716 fn = build_vfn_ref (argarray[0], DECL_VINDEX (fn));
6720 fn = build_addr_func (fn);
6722 return build_cxx_call (fn, nargs, argarray);
6725 /* Build and return a call to FN, using NARGS arguments in ARGARRAY.
6726 This function performs no overload resolution, conversion, or other
6727 high-level operations. */
6730 build_cxx_call (tree fn, int nargs, tree *argarray)
6734 /* Remember roughly where this call is. */
6735 location_t loc = EXPR_LOC_OR_HERE (fn);
6736 fn = build_call_a (fn, nargs, argarray);
6737 SET_EXPR_LOCATION (fn, loc);
6739 /* If this call might throw an exception, note that fact. */
6740 fndecl = get_callee_fndecl (fn);
6742 /* Check that arguments to builtin functions match the expectations. */
6744 && DECL_BUILT_IN (fndecl)
6745 && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
6746 && !check_builtin_function_arguments (fndecl, nargs, argarray))
6747 return error_mark_node;
6749 /* Some built-in function calls will be evaluated at compile-time in
6751 fn = fold_if_not_in_template (fn);
6753 if (VOID_TYPE_P (TREE_TYPE (fn)))
6756 fn = require_complete_type (fn);
6757 if (fn == error_mark_node)
6758 return error_mark_node;
6760 if (MAYBE_CLASS_TYPE_P (TREE_TYPE (fn)))
6761 fn = build_cplus_new (TREE_TYPE (fn), fn, tf_warning_or_error);
6762 return convert_from_reference (fn);
6765 static GTY(()) tree java_iface_lookup_fn;
6767 /* Make an expression which yields the address of the Java interface
6768 method FN. This is achieved by generating a call to libjava's
6769 _Jv_LookupInterfaceMethodIdx(). */
6772 build_java_interface_fn_ref (tree fn, tree instance)
6774 tree lookup_fn, method, idx;
6775 tree klass_ref, iface, iface_ref;
6778 if (!java_iface_lookup_fn)
6780 tree ftype = build_function_type_list (ptr_type_node,
6781 ptr_type_node, ptr_type_node,
6782 java_int_type_node, NULL_TREE);
6783 java_iface_lookup_fn
6784 = add_builtin_function ("_Jv_LookupInterfaceMethodIdx", ftype,
6785 0, NOT_BUILT_IN, NULL, NULL_TREE);
6788 /* Look up the pointer to the runtime java.lang.Class object for `instance'.
6789 This is the first entry in the vtable. */
6790 klass_ref = build_vtbl_ref (cp_build_indirect_ref (instance, RO_NULL,
6791 tf_warning_or_error),
6794 /* Get the java.lang.Class pointer for the interface being called. */
6795 iface = DECL_CONTEXT (fn);
6796 iface_ref = lookup_field (iface, get_identifier ("class$"), 0, false);
6797 if (!iface_ref || TREE_CODE (iface_ref) != VAR_DECL
6798 || DECL_CONTEXT (iface_ref) != iface)
6800 error ("could not find class$ field in java interface type %qT",
6802 return error_mark_node;
6804 iface_ref = build_address (iface_ref);
6805 iface_ref = convert (build_pointer_type (iface), iface_ref);
6807 /* Determine the itable index of FN. */
6809 for (method = TYPE_METHODS (iface); method; method = DECL_CHAIN (method))
6811 if (!DECL_VIRTUAL_P (method))
6817 idx = build_int_cst (NULL_TREE, i);
6819 lookup_fn = build1 (ADDR_EXPR,
6820 build_pointer_type (TREE_TYPE (java_iface_lookup_fn)),
6821 java_iface_lookup_fn);
6822 return build_call_nary (ptr_type_node, lookup_fn,
6823 3, klass_ref, iface_ref, idx);
6826 /* Returns the value to use for the in-charge parameter when making a
6827 call to a function with the indicated NAME.
6829 FIXME:Can't we find a neater way to do this mapping? */
6832 in_charge_arg_for_name (tree name)
6834 if (name == base_ctor_identifier
6835 || name == base_dtor_identifier)
6836 return integer_zero_node;
6837 else if (name == complete_ctor_identifier)
6838 return integer_one_node;
6839 else if (name == complete_dtor_identifier)
6840 return integer_two_node;
6841 else if (name == deleting_dtor_identifier)
6842 return integer_three_node;
6844 /* This function should only be called with one of the names listed
6850 /* Build a call to a constructor, destructor, or an assignment
6851 operator for INSTANCE, an expression with class type. NAME
6852 indicates the special member function to call; *ARGS are the
6853 arguments. ARGS may be NULL. This may change ARGS. BINFO
6854 indicates the base of INSTANCE that is to be passed as the `this'
6855 parameter to the member function called.
6857 FLAGS are the LOOKUP_* flags to use when processing the call.
6859 If NAME indicates a complete object constructor, INSTANCE may be
6860 NULL_TREE. In this case, the caller will call build_cplus_new to
6861 store the newly constructed object into a VAR_DECL. */
6864 build_special_member_call (tree instance, tree name, VEC(tree,gc) **args,
6865 tree binfo, int flags, tsubst_flags_t complain)
6868 /* The type of the subobject to be constructed or destroyed. */
6870 VEC(tree,gc) *allocated = NULL;
6873 gcc_assert (name == complete_ctor_identifier
6874 || name == base_ctor_identifier
6875 || name == complete_dtor_identifier
6876 || name == base_dtor_identifier
6877 || name == deleting_dtor_identifier
6878 || name == ansi_assopname (NOP_EXPR));
6881 /* Resolve the name. */
6882 if (!complete_type_or_maybe_complain (binfo, NULL_TREE, complain))
6883 return error_mark_node;
6885 binfo = TYPE_BINFO (binfo);
6888 gcc_assert (binfo != NULL_TREE);
6890 class_type = BINFO_TYPE (binfo);
6892 /* Handle the special case where INSTANCE is NULL_TREE. */
6893 if (name == complete_ctor_identifier && !instance)
6895 instance = build_int_cst (build_pointer_type (class_type), 0);
6896 instance = build1 (INDIRECT_REF, class_type, instance);
6900 if (name == complete_dtor_identifier
6901 || name == base_dtor_identifier
6902 || name == deleting_dtor_identifier)
6903 gcc_assert (args == NULL || VEC_empty (tree, *args));
6905 /* Convert to the base class, if necessary. */
6906 if (!same_type_ignoring_top_level_qualifiers_p
6907 (TREE_TYPE (instance), BINFO_TYPE (binfo)))
6909 if (name != ansi_assopname (NOP_EXPR))
6910 /* For constructors and destructors, either the base is
6911 non-virtual, or it is virtual but we are doing the
6912 conversion from a constructor or destructor for the
6913 complete object. In either case, we can convert
6915 instance = convert_to_base_statically (instance, binfo);
6917 /* However, for assignment operators, we must convert
6918 dynamically if the base is virtual. */
6919 instance = build_base_path (PLUS_EXPR, instance,
6920 binfo, /*nonnull=*/1);
6924 gcc_assert (instance != NULL_TREE);
6926 fns = lookup_fnfields (binfo, name, 1);
6928 /* When making a call to a constructor or destructor for a subobject
6929 that uses virtual base classes, pass down a pointer to a VTT for
6931 if ((name == base_ctor_identifier
6932 || name == base_dtor_identifier)
6933 && CLASSTYPE_VBASECLASSES (class_type))
6938 /* If the current function is a complete object constructor
6939 or destructor, then we fetch the VTT directly.
6940 Otherwise, we look it up using the VTT we were given. */
6941 vtt = DECL_CHAIN (CLASSTYPE_VTABLES (current_class_type));
6942 vtt = decay_conversion (vtt);
6943 vtt = build3 (COND_EXPR, TREE_TYPE (vtt),
6944 build2 (EQ_EXPR, boolean_type_node,
6945 current_in_charge_parm, integer_zero_node),
6948 gcc_assert (BINFO_SUBVTT_INDEX (binfo));
6949 sub_vtt = fold_build_pointer_plus (vtt, BINFO_SUBVTT_INDEX (binfo));
6953 allocated = make_tree_vector ();
6957 VEC_safe_insert (tree, gc, *args, 0, sub_vtt);
6960 ret = build_new_method_call (instance, fns, args,
6961 TYPE_BINFO (BINFO_TYPE (binfo)),
6965 if (allocated != NULL)
6966 release_tree_vector (allocated);
6971 /* Return the NAME, as a C string. The NAME indicates a function that
6972 is a member of TYPE. *FREE_P is set to true if the caller must
6973 free the memory returned.
6975 Rather than go through all of this, we should simply set the names
6976 of constructors and destructors appropriately, and dispense with
6977 ctor_identifier, dtor_identifier, etc. */
6980 name_as_c_string (tree name, tree type, bool *free_p)
6984 /* Assume that we will not allocate memory. */
6986 /* Constructors and destructors are special. */
6987 if (IDENTIFIER_CTOR_OR_DTOR_P (name))
6990 = CONST_CAST (char *, identifier_to_locale (IDENTIFIER_POINTER (constructor_name (type))));
6991 /* For a destructor, add the '~'. */
6992 if (name == complete_dtor_identifier
6993 || name == base_dtor_identifier
6994 || name == deleting_dtor_identifier)
6996 pretty_name = concat ("~", pretty_name, NULL);
6997 /* Remember that we need to free the memory allocated. */
7001 else if (IDENTIFIER_TYPENAME_P (name))
7003 pretty_name = concat ("operator ",
7004 type_as_string_translate (TREE_TYPE (name),
7005 TFF_PLAIN_IDENTIFIER),
7007 /* Remember that we need to free the memory allocated. */
7011 pretty_name = CONST_CAST (char *, identifier_to_locale (IDENTIFIER_POINTER (name)));
7016 /* Build a call to "INSTANCE.FN (ARGS)". If FN_P is non-NULL, it will
7017 be set, upon return, to the function called. ARGS may be NULL.
7018 This may change ARGS. */
7021 build_new_method_call_1 (tree instance, tree fns, VEC(tree,gc) **args,
7022 tree conversion_path, int flags,
7023 tree *fn_p, tsubst_flags_t complain)
7025 struct z_candidate *candidates = 0, *cand;
7026 tree explicit_targs = NULL_TREE;
7027 tree basetype = NULL_TREE;
7030 tree first_mem_arg = NULL_TREE;
7033 bool skip_first_for_error;
7034 VEC(tree,gc) *user_args;
7037 int template_only = 0;
7041 VEC(tree,gc) *orig_args = NULL;
7044 gcc_assert (instance != NULL_TREE);
7046 /* We don't know what function we're going to call, yet. */
7050 if (error_operand_p (instance)
7051 || !fns || error_operand_p (fns))
7052 return error_mark_node;
7054 if (!BASELINK_P (fns))
7056 if (complain & tf_error)
7057 error ("call to non-function %qD", fns);
7058 return error_mark_node;
7061 orig_instance = instance;
7064 /* Dismantle the baselink to collect all the information we need. */
7065 if (!conversion_path)
7066 conversion_path = BASELINK_BINFO (fns);
7067 access_binfo = BASELINK_ACCESS_BINFO (fns);
7068 optype = BASELINK_OPTYPE (fns);
7069 fns = BASELINK_FUNCTIONS (fns);
7070 if (TREE_CODE (fns) == TEMPLATE_ID_EXPR)
7072 explicit_targs = TREE_OPERAND (fns, 1);
7073 fns = TREE_OPERAND (fns, 0);
7076 gcc_assert (TREE_CODE (fns) == FUNCTION_DECL
7077 || TREE_CODE (fns) == TEMPLATE_DECL
7078 || TREE_CODE (fns) == OVERLOAD);
7079 fn = get_first_fn (fns);
7080 name = DECL_NAME (fn);
7082 basetype = TYPE_MAIN_VARIANT (TREE_TYPE (instance));
7083 gcc_assert (CLASS_TYPE_P (basetype));
7085 if (processing_template_decl)
7087 orig_args = args == NULL ? NULL : make_tree_vector_copy (*args);
7088 instance = build_non_dependent_expr (instance);
7090 make_args_non_dependent (*args);
7093 user_args = args == NULL ? NULL : *args;
7094 /* Under DR 147 A::A() is an invalid constructor call,
7095 not a functional cast. */
7096 if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (fn))
7098 if (! (complain & tf_error))
7099 return error_mark_node;
7101 permerror (input_location,
7102 "cannot call constructor %<%T::%D%> directly",
7104 permerror (input_location, " for a function-style cast, remove the "
7105 "redundant %<::%D%>", name);
7106 call = build_functional_cast (basetype, build_tree_list_vec (user_args),
7111 /* Figure out whether to skip the first argument for the error
7112 message we will display to users if an error occurs. We don't
7113 want to display any compiler-generated arguments. The "this"
7114 pointer hasn't been added yet. However, we must remove the VTT
7115 pointer if this is a call to a base-class constructor or
7117 skip_first_for_error = false;
7118 if (IDENTIFIER_CTOR_OR_DTOR_P (name))
7120 /* Callers should explicitly indicate whether they want to construct
7121 the complete object or just the part without virtual bases. */
7122 gcc_assert (name != ctor_identifier);
7123 /* Similarly for destructors. */
7124 gcc_assert (name != dtor_identifier);
7125 /* Remove the VTT pointer, if present. */
7126 if ((name == base_ctor_identifier || name == base_dtor_identifier)
7127 && CLASSTYPE_VBASECLASSES (basetype))
7128 skip_first_for_error = true;
7131 /* Process the argument list. */
7132 if (args != NULL && *args != NULL)
7134 *args = resolve_args (*args, complain);
7136 return error_mark_node;
7139 instance_ptr = build_this (instance);
7141 /* It's OK to call destructors and constructors on cv-qualified objects.
7142 Therefore, convert the INSTANCE_PTR to the unqualified type, if
7144 if (DECL_DESTRUCTOR_P (fn)
7145 || DECL_CONSTRUCTOR_P (fn))
7147 tree type = build_pointer_type (basetype);
7148 if (!same_type_p (type, TREE_TYPE (instance_ptr)))
7149 instance_ptr = build_nop (type, instance_ptr);
7151 if (DECL_DESTRUCTOR_P (fn))
7152 name = complete_dtor_identifier;
7154 first_mem_arg = instance_ptr;
7156 /* Get the high-water mark for the CONVERSION_OBSTACK. */
7157 p = conversion_obstack_alloc (0);
7159 /* If CONSTRUCTOR_IS_DIRECT_INIT is set, this was a T{ } form
7160 initializer, not T({ }). */
7161 if (DECL_CONSTRUCTOR_P (fn) && args != NULL && !VEC_empty (tree, *args)
7162 && BRACE_ENCLOSED_INITIALIZER_P (VEC_index (tree, *args, 0))
7163 && CONSTRUCTOR_IS_DIRECT_INIT (VEC_index (tree, *args, 0)))
7165 tree init_list = VEC_index (tree, *args, 0);
7167 gcc_assert (VEC_length (tree, *args) == 1
7168 && !(flags & LOOKUP_ONLYCONVERTING));
7170 /* If the initializer list has no elements and T is a class type with
7171 a default constructor, the object is value-initialized. Handle
7172 this here so we don't need to handle it wherever we use
7173 build_special_member_call. */
7174 if (CONSTRUCTOR_NELTS (init_list) == 0
7175 && TYPE_HAS_DEFAULT_CONSTRUCTOR (basetype)
7176 && !processing_template_decl)
7178 tree ob, init = build_value_init (basetype, complain);
7179 if (integer_zerop (instance_ptr))
7180 return get_target_expr_sfinae (init, complain);
7181 ob = build_fold_indirect_ref (instance_ptr);
7182 init = build2 (INIT_EXPR, TREE_TYPE (ob), ob, init);
7183 TREE_SIDE_EFFECTS (init) = true;
7187 add_list_candidates (fns, first_mem_arg, init_list,
7188 basetype, explicit_targs, template_only,
7189 conversion_path, access_binfo, flags, &candidates);
7193 add_candidates (fns, first_mem_arg, user_args, optype,
7194 explicit_targs, template_only, conversion_path,
7195 access_binfo, flags, &candidates);
7197 any_viable_p = false;
7198 candidates = splice_viable (candidates, pedantic, &any_viable_p);
7202 if (complain & tf_error)
7204 if (!COMPLETE_OR_OPEN_TYPE_P (basetype))
7205 cxx_incomplete_type_error (instance_ptr, basetype);
7207 error ("no matching function for call to %<%T::operator %T(%A)%#V%>",
7208 basetype, optype, build_tree_list_vec (user_args),
7209 TREE_TYPE (TREE_TYPE (instance_ptr)));
7216 pretty_name = name_as_c_string (name, basetype, &free_p);
7217 arglist = build_tree_list_vec (user_args);
7218 if (skip_first_for_error)
7219 arglist = TREE_CHAIN (arglist);
7220 error ("no matching function for call to %<%T::%s(%A)%#V%>",
7221 basetype, pretty_name, arglist,
7222 TREE_TYPE (TREE_TYPE (instance_ptr)));
7226 print_z_candidates (location_of (name), candidates);
7228 call = error_mark_node;
7232 cand = tourney (candidates);
7239 if (complain & tf_error)
7241 pretty_name = name_as_c_string (name, basetype, &free_p);
7242 arglist = build_tree_list_vec (user_args);
7243 if (skip_first_for_error)
7244 arglist = TREE_CHAIN (arglist);
7245 error ("call of overloaded %<%s(%A)%> is ambiguous", pretty_name,
7247 print_z_candidates (location_of (name), candidates);
7251 call = error_mark_node;
7257 if (!(flags & LOOKUP_NONVIRTUAL)
7258 && DECL_PURE_VIRTUAL_P (fn)
7259 && instance == current_class_ref
7260 && (DECL_CONSTRUCTOR_P (current_function_decl)
7261 || DECL_DESTRUCTOR_P (current_function_decl))
7262 && (complain & tf_warning))
7263 /* This is not an error, it is runtime undefined
7265 warning (0, (DECL_CONSTRUCTOR_P (current_function_decl) ?
7266 "pure virtual %q#D called from constructor"
7267 : "pure virtual %q#D called from destructor"),
7270 if (TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE
7271 && is_dummy_object (instance_ptr))
7273 if (complain & tf_error)
7274 error ("cannot call member function %qD without object",
7276 call = error_mark_node;
7280 if (DECL_VINDEX (fn) && ! (flags & LOOKUP_NONVIRTUAL)
7281 && resolves_to_fixed_type_p (instance, 0))
7282 flags |= LOOKUP_NONVIRTUAL;
7284 flags |= LOOKUP_EXPLICIT_TMPL_ARGS;
7285 /* Now we know what function is being called. */
7288 /* Build the actual CALL_EXPR. */
7289 call = build_over_call (cand, flags, complain);
7290 /* In an expression of the form `a->f()' where `f' turns
7291 out to be a static member function, `a' is
7292 none-the-less evaluated. */
7293 if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE
7294 && !is_dummy_object (instance_ptr)
7295 && TREE_SIDE_EFFECTS (instance_ptr))
7296 call = build2 (COMPOUND_EXPR, TREE_TYPE (call),
7297 instance_ptr, call);
7298 else if (call != error_mark_node
7299 && DECL_DESTRUCTOR_P (cand->fn)
7300 && !VOID_TYPE_P (TREE_TYPE (call)))
7301 /* An explicit call of the form "x->~X()" has type
7302 "void". However, on platforms where destructors
7303 return "this" (i.e., those where
7304 targetm.cxx.cdtor_returns_this is true), such calls
7305 will appear to have a return value of pointer type
7306 to the low-level call machinery. We do not want to
7307 change the low-level machinery, since we want to be
7308 able to optimize "delete f()" on such platforms as
7309 "operator delete(~X(f()))" (rather than generating
7310 "t = f(), ~X(t), operator delete (t)"). */
7311 call = build_nop (void_type_node, call);
7316 if (processing_template_decl && call != error_mark_node)
7318 bool cast_to_void = false;
7320 if (TREE_CODE (call) == COMPOUND_EXPR)
7321 call = TREE_OPERAND (call, 1);
7322 else if (TREE_CODE (call) == NOP_EXPR)
7324 cast_to_void = true;
7325 call = TREE_OPERAND (call, 0);
7327 if (TREE_CODE (call) == INDIRECT_REF)
7328 call = TREE_OPERAND (call, 0);
7329 call = (build_min_non_dep_call_vec
7331 build_min (COMPONENT_REF, TREE_TYPE (CALL_EXPR_FN (call)),
7332 orig_instance, orig_fns, NULL_TREE),
7334 call = convert_from_reference (call);
7336 call = build_nop (void_type_node, call);
7339 /* Free all the conversions we allocated. */
7340 obstack_free (&conversion_obstack, p);
7342 if (orig_args != NULL)
7343 release_tree_vector (orig_args);
7348 /* Wrapper for above. */
7351 build_new_method_call (tree instance, tree fns, VEC(tree,gc) **args,
7352 tree conversion_path, int flags,
7353 tree *fn_p, tsubst_flags_t complain)
7356 bool subtime = timevar_cond_start (TV_OVERLOAD);
7357 ret = build_new_method_call_1 (instance, fns, args, conversion_path, flags,
7359 timevar_cond_stop (TV_OVERLOAD, subtime);
7363 /* Returns true iff standard conversion sequence ICS1 is a proper
7364 subsequence of ICS2. */
7367 is_subseq (conversion *ics1, conversion *ics2)
7369 /* We can assume that a conversion of the same code
7370 between the same types indicates a subsequence since we only get
7371 here if the types we are converting from are the same. */
7373 while (ics1->kind == ck_rvalue
7374 || ics1->kind == ck_lvalue)
7375 ics1 = ics1->u.next;
7379 while (ics2->kind == ck_rvalue
7380 || ics2->kind == ck_lvalue)
7381 ics2 = ics2->u.next;
7383 if (ics2->kind == ck_user
7384 || ics2->kind == ck_ambig
7385 || ics2->kind == ck_aggr
7386 || ics2->kind == ck_list
7387 || ics2->kind == ck_identity)
7388 /* At this point, ICS1 cannot be a proper subsequence of
7389 ICS2. We can get a USER_CONV when we are comparing the
7390 second standard conversion sequence of two user conversion
7394 ics2 = ics2->u.next;
7396 if (ics2->kind == ics1->kind
7397 && same_type_p (ics2->type, ics1->type)
7398 && same_type_p (ics2->u.next->type,
7399 ics1->u.next->type))
7404 /* Returns nonzero iff DERIVED is derived from BASE. The inputs may
7405 be any _TYPE nodes. */
7408 is_properly_derived_from (tree derived, tree base)
7410 if (!CLASS_TYPE_P (derived) || !CLASS_TYPE_P (base))
7413 /* We only allow proper derivation here. The DERIVED_FROM_P macro
7414 considers every class derived from itself. */
7415 return (!same_type_ignoring_top_level_qualifiers_p (derived, base)
7416 && DERIVED_FROM_P (base, derived));
7419 /* We build the ICS for an implicit object parameter as a pointer
7420 conversion sequence. However, such a sequence should be compared
7421 as if it were a reference conversion sequence. If ICS is the
7422 implicit conversion sequence for an implicit object parameter,
7423 modify it accordingly. */
7426 maybe_handle_implicit_object (conversion **ics)
7430 /* [over.match.funcs]
7432 For non-static member functions, the type of the
7433 implicit object parameter is "reference to cv X"
7434 where X is the class of which the function is a
7435 member and cv is the cv-qualification on the member
7436 function declaration. */
7437 conversion *t = *ics;
7438 tree reference_type;
7440 /* The `this' parameter is a pointer to a class type. Make the
7441 implicit conversion talk about a reference to that same class
7443 reference_type = TREE_TYPE (t->type);
7444 reference_type = build_reference_type (reference_type);
7446 if (t->kind == ck_qual)
7448 if (t->kind == ck_ptr)
7450 t = build_identity_conv (TREE_TYPE (t->type), NULL_TREE);
7451 t = direct_reference_binding (reference_type, t);
7453 t->rvaluedness_matches_p = 0;
7458 /* If *ICS is a REF_BIND set *ICS to the remainder of the conversion,
7459 and return the initial reference binding conversion. Otherwise,
7460 leave *ICS unchanged and return NULL. */
7463 maybe_handle_ref_bind (conversion **ics)
7465 if ((*ics)->kind == ck_ref_bind)
7467 conversion *old_ics = *ics;
7468 *ics = old_ics->u.next;
7469 (*ics)->user_conv_p = old_ics->user_conv_p;
7476 /* Compare two implicit conversion sequences according to the rules set out in
7477 [over.ics.rank]. Return values:
7479 1: ics1 is better than ics2
7480 -1: ics2 is better than ics1
7481 0: ics1 and ics2 are indistinguishable */
7484 compare_ics (conversion *ics1, conversion *ics2)
7490 tree deref_from_type1 = NULL_TREE;
7491 tree deref_from_type2 = NULL_TREE;
7492 tree deref_to_type1 = NULL_TREE;
7493 tree deref_to_type2 = NULL_TREE;
7494 conversion_rank rank1, rank2;
7496 /* REF_BINDING is nonzero if the result of the conversion sequence
7497 is a reference type. In that case REF_CONV is the reference
7498 binding conversion. */
7499 conversion *ref_conv1;
7500 conversion *ref_conv2;
7502 /* Handle implicit object parameters. */
7503 maybe_handle_implicit_object (&ics1);
7504 maybe_handle_implicit_object (&ics2);
7506 /* Handle reference parameters. */
7507 ref_conv1 = maybe_handle_ref_bind (&ics1);
7508 ref_conv2 = maybe_handle_ref_bind (&ics2);
7510 /* List-initialization sequence L1 is a better conversion sequence than
7511 list-initialization sequence L2 if L1 converts to
7512 std::initializer_list<X> for some X and L2 does not. */
7513 if (ics1->kind == ck_list && ics2->kind != ck_list)
7515 if (ics2->kind == ck_list && ics1->kind != ck_list)
7520 When comparing the basic forms of implicit conversion sequences (as
7521 defined in _over.best.ics_)
7523 --a standard conversion sequence (_over.ics.scs_) is a better
7524 conversion sequence than a user-defined conversion sequence
7525 or an ellipsis conversion sequence, and
7527 --a user-defined conversion sequence (_over.ics.user_) is a
7528 better conversion sequence than an ellipsis conversion sequence
7529 (_over.ics.ellipsis_). */
7530 rank1 = CONVERSION_RANK (ics1);
7531 rank2 = CONVERSION_RANK (ics2);
7535 else if (rank1 < rank2)
7538 if (rank1 == cr_bad)
7540 /* Both ICS are bad. We try to make a decision based on what would
7541 have happened if they'd been good. This is not an extension,
7542 we'll still give an error when we build up the call; this just
7543 helps us give a more helpful error message. */
7544 rank1 = BAD_CONVERSION_RANK (ics1);
7545 rank2 = BAD_CONVERSION_RANK (ics2);
7549 else if (rank1 < rank2)
7552 /* We couldn't make up our minds; try to figure it out below. */
7555 if (ics1->ellipsis_p)
7556 /* Both conversions are ellipsis conversions. */
7559 /* User-defined conversion sequence U1 is a better conversion sequence
7560 than another user-defined conversion sequence U2 if they contain the
7561 same user-defined conversion operator or constructor and if the sec-
7562 ond standard conversion sequence of U1 is better than the second
7563 standard conversion sequence of U2. */
7565 /* Handle list-conversion with the same code even though it isn't always
7566 ranked as a user-defined conversion and it doesn't have a second
7567 standard conversion sequence; it will still have the desired effect.
7568 Specifically, we need to do the reference binding comparison at the
7569 end of this function. */
7571 if (ics1->user_conv_p || ics1->kind == ck_list)
7576 for (t1 = ics1; t1->kind != ck_user; t1 = t1->u.next)
7577 if (t1->kind == ck_ambig || t1->kind == ck_aggr
7578 || t1->kind == ck_list)
7580 for (t2 = ics2; t2->kind != ck_user; t2 = t2->u.next)
7581 if (t2->kind == ck_ambig || t2->kind == ck_aggr
7582 || t2->kind == ck_list)
7585 if (t1->kind != t2->kind)
7587 else if (t1->kind == ck_user)
7589 if (t1->cand->fn != t2->cand->fn)
7594 /* For ambiguous or aggregate conversions, use the target type as
7595 a proxy for the conversion function. */
7596 if (!same_type_ignoring_top_level_qualifiers_p (t1->type, t2->type))
7600 /* We can just fall through here, after setting up
7601 FROM_TYPE1 and FROM_TYPE2. */
7602 from_type1 = t1->type;
7603 from_type2 = t2->type;
7610 /* We're dealing with two standard conversion sequences.
7614 Standard conversion sequence S1 is a better conversion
7615 sequence than standard conversion sequence S2 if
7617 --S1 is a proper subsequence of S2 (comparing the conversion
7618 sequences in the canonical form defined by _over.ics.scs_,
7619 excluding any Lvalue Transformation; the identity
7620 conversion sequence is considered to be a subsequence of
7621 any non-identity conversion sequence */
7624 while (t1->kind != ck_identity)
7626 from_type1 = t1->type;
7629 while (t2->kind != ck_identity)
7631 from_type2 = t2->type;
7634 /* One sequence can only be a subsequence of the other if they start with
7635 the same type. They can start with different types when comparing the
7636 second standard conversion sequence in two user-defined conversion
7638 if (same_type_p (from_type1, from_type2))
7640 if (is_subseq (ics1, ics2))
7642 if (is_subseq (ics2, ics1))
7650 --the rank of S1 is better than the rank of S2 (by the rules
7653 Standard conversion sequences are ordered by their ranks: an Exact
7654 Match is a better conversion than a Promotion, which is a better
7655 conversion than a Conversion.
7657 Two conversion sequences with the same rank are indistinguishable
7658 unless one of the following rules applies:
7660 --A conversion that does not a convert a pointer, pointer to member,
7661 or std::nullptr_t to bool is better than one that does.
7663 The ICS_STD_RANK automatically handles the pointer-to-bool rule,
7664 so that we do not have to check it explicitly. */
7665 if (ics1->rank < ics2->rank)
7667 else if (ics2->rank < ics1->rank)
7670 to_type1 = ics1->type;
7671 to_type2 = ics2->type;
7673 /* A conversion from scalar arithmetic type to complex is worse than a
7674 conversion between scalar arithmetic types. */
7675 if (same_type_p (from_type1, from_type2)
7676 && ARITHMETIC_TYPE_P (from_type1)
7677 && ARITHMETIC_TYPE_P (to_type1)
7678 && ARITHMETIC_TYPE_P (to_type2)
7679 && ((TREE_CODE (to_type1) == COMPLEX_TYPE)
7680 != (TREE_CODE (to_type2) == COMPLEX_TYPE)))
7682 if (TREE_CODE (to_type1) == COMPLEX_TYPE)
7688 if (TYPE_PTR_P (from_type1)
7689 && TYPE_PTR_P (from_type2)
7690 && TYPE_PTR_P (to_type1)
7691 && TYPE_PTR_P (to_type2))
7693 deref_from_type1 = TREE_TYPE (from_type1);
7694 deref_from_type2 = TREE_TYPE (from_type2);
7695 deref_to_type1 = TREE_TYPE (to_type1);
7696 deref_to_type2 = TREE_TYPE (to_type2);
7698 /* The rules for pointers to members A::* are just like the rules
7699 for pointers A*, except opposite: if B is derived from A then
7700 A::* converts to B::*, not vice versa. For that reason, we
7701 switch the from_ and to_ variables here. */
7702 else if ((TYPE_PTRMEM_P (from_type1) && TYPE_PTRMEM_P (from_type2)
7703 && TYPE_PTRMEM_P (to_type1) && TYPE_PTRMEM_P (to_type2))
7704 || (TYPE_PTRMEMFUNC_P (from_type1)
7705 && TYPE_PTRMEMFUNC_P (from_type2)
7706 && TYPE_PTRMEMFUNC_P (to_type1)
7707 && TYPE_PTRMEMFUNC_P (to_type2)))
7709 deref_to_type1 = TYPE_PTRMEM_CLASS_TYPE (from_type1);
7710 deref_to_type2 = TYPE_PTRMEM_CLASS_TYPE (from_type2);
7711 deref_from_type1 = TYPE_PTRMEM_CLASS_TYPE (to_type1);
7712 deref_from_type2 = TYPE_PTRMEM_CLASS_TYPE (to_type2);
7715 if (deref_from_type1 != NULL_TREE
7716 && RECORD_OR_UNION_CODE_P (TREE_CODE (deref_from_type1))
7717 && RECORD_OR_UNION_CODE_P (TREE_CODE (deref_from_type2)))
7719 /* This was one of the pointer or pointer-like conversions.
7723 --If class B is derived directly or indirectly from class A,
7724 conversion of B* to A* is better than conversion of B* to
7725 void*, and conversion of A* to void* is better than
7726 conversion of B* to void*. */
7727 if (TREE_CODE (deref_to_type1) == VOID_TYPE
7728 && TREE_CODE (deref_to_type2) == VOID_TYPE)
7730 if (is_properly_derived_from (deref_from_type1,
7733 else if (is_properly_derived_from (deref_from_type2,
7737 else if (TREE_CODE (deref_to_type1) == VOID_TYPE
7738 || TREE_CODE (deref_to_type2) == VOID_TYPE)
7740 if (same_type_p (deref_from_type1, deref_from_type2))
7742 if (TREE_CODE (deref_to_type2) == VOID_TYPE)
7744 if (is_properly_derived_from (deref_from_type1,
7748 /* We know that DEREF_TO_TYPE1 is `void' here. */
7749 else if (is_properly_derived_from (deref_from_type1,
7754 else if (RECORD_OR_UNION_CODE_P (TREE_CODE (deref_to_type1))
7755 && RECORD_OR_UNION_CODE_P (TREE_CODE (deref_to_type2)))
7759 --If class B is derived directly or indirectly from class A
7760 and class C is derived directly or indirectly from B,
7762 --conversion of C* to B* is better than conversion of C* to
7765 --conversion of B* to A* is better than conversion of C* to
7767 if (same_type_p (deref_from_type1, deref_from_type2))
7769 if (is_properly_derived_from (deref_to_type1,
7772 else if (is_properly_derived_from (deref_to_type2,
7776 else if (same_type_p (deref_to_type1, deref_to_type2))
7778 if (is_properly_derived_from (deref_from_type2,
7781 else if (is_properly_derived_from (deref_from_type1,
7787 else if (CLASS_TYPE_P (non_reference (from_type1))
7788 && same_type_p (from_type1, from_type2))
7790 tree from = non_reference (from_type1);
7794 --binding of an expression of type C to a reference of type
7795 B& is better than binding an expression of type C to a
7796 reference of type A&
7798 --conversion of C to B is better than conversion of C to A, */
7799 if (is_properly_derived_from (from, to_type1)
7800 && is_properly_derived_from (from, to_type2))
7802 if (is_properly_derived_from (to_type1, to_type2))
7804 else if (is_properly_derived_from (to_type2, to_type1))
7808 else if (CLASS_TYPE_P (non_reference (to_type1))
7809 && same_type_p (to_type1, to_type2))
7811 tree to = non_reference (to_type1);
7815 --binding of an expression of type B to a reference of type
7816 A& is better than binding an expression of type C to a
7817 reference of type A&,
7819 --conversion of B to A is better than conversion of C to A */
7820 if (is_properly_derived_from (from_type1, to)
7821 && is_properly_derived_from (from_type2, to))
7823 if (is_properly_derived_from (from_type2, from_type1))
7825 else if (is_properly_derived_from (from_type1, from_type2))
7832 --S1 and S2 differ only in their qualification conversion and yield
7833 similar types T1 and T2 (_conv.qual_), respectively, and the cv-
7834 qualification signature of type T1 is a proper subset of the cv-
7835 qualification signature of type T2 */
7836 if (ics1->kind == ck_qual
7837 && ics2->kind == ck_qual
7838 && same_type_p (from_type1, from_type2))
7840 int result = comp_cv_qual_signature (to_type1, to_type2);
7847 --S1 and S2 are reference bindings (_dcl.init.ref_) and neither refers
7848 to an implicit object parameter, and either S1 binds an lvalue reference
7849 to an lvalue and S2 binds an rvalue reference or S1 binds an rvalue
7850 reference to an rvalue and S2 binds an lvalue reference
7851 (C++0x draft standard, 13.3.3.2)
7853 --S1 and S2 are reference bindings (_dcl.init.ref_), and the
7854 types to which the references refer are the same type except for
7855 top-level cv-qualifiers, and the type to which the reference
7856 initialized by S2 refers is more cv-qualified than the type to
7857 which the reference initialized by S1 refers */
7859 if (ref_conv1 && ref_conv2)
7861 if (!ref_conv1->this_p && !ref_conv2->this_p)
7863 if (ref_conv1->rvaluedness_matches_p
7864 > ref_conv2->rvaluedness_matches_p)
7866 if (ref_conv2->rvaluedness_matches_p
7867 > ref_conv1->rvaluedness_matches_p)
7871 if (same_type_ignoring_top_level_qualifiers_p (to_type1, to_type2))
7872 return comp_cv_qualification (TREE_TYPE (ref_conv2->type),
7873 TREE_TYPE (ref_conv1->type));
7876 /* Neither conversion sequence is better than the other. */
7880 /* The source type for this standard conversion sequence. */
7883 source_type (conversion *t)
7885 for (;; t = t->u.next)
7887 if (t->kind == ck_user
7888 || t->kind == ck_ambig
7889 || t->kind == ck_identity)
7895 /* Note a warning about preferring WINNER to LOSER. We do this by storing
7896 a pointer to LOSER and re-running joust to produce the warning if WINNER
7897 is actually used. */
7900 add_warning (struct z_candidate *winner, struct z_candidate *loser)
7902 candidate_warning *cw = (candidate_warning *)
7903 conversion_obstack_alloc (sizeof (candidate_warning));
7905 cw->next = winner->warnings;
7906 winner->warnings = cw;
7909 /* Compare two candidates for overloading as described in
7910 [over.match.best]. Return values:
7912 1: cand1 is better than cand2
7913 -1: cand2 is better than cand1
7914 0: cand1 and cand2 are indistinguishable */
7917 joust (struct z_candidate *cand1, struct z_candidate *cand2, bool warn)
7920 int off1 = 0, off2 = 0;
7924 /* Candidates that involve bad conversions are always worse than those
7926 if (cand1->viable > cand2->viable)
7928 if (cand1->viable < cand2->viable)
7931 /* If we have two pseudo-candidates for conversions to the same type,
7932 or two candidates for the same function, arbitrarily pick one. */
7933 if (cand1->fn == cand2->fn
7934 && (IS_TYPE_OR_DECL_P (cand1->fn)))
7937 /* a viable function F1
7938 is defined to be a better function than another viable function F2 if
7939 for all arguments i, ICSi(F1) is not a worse conversion sequence than
7940 ICSi(F2), and then */
7942 /* for some argument j, ICSj(F1) is a better conversion sequence than
7945 /* For comparing static and non-static member functions, we ignore
7946 the implicit object parameter of the non-static function. The
7947 standard says to pretend that the static function has an object
7948 parm, but that won't work with operator overloading. */
7949 len = cand1->num_convs;
7950 if (len != cand2->num_convs)
7952 int static_1 = DECL_STATIC_FUNCTION_P (cand1->fn);
7953 int static_2 = DECL_STATIC_FUNCTION_P (cand2->fn);
7955 gcc_assert (static_1 != static_2);
7966 for (i = 0; i < len; ++i)
7968 conversion *t1 = cand1->convs[i + off1];
7969 conversion *t2 = cand2->convs[i + off2];
7970 int comp = compare_ics (t1, t2);
7975 && (CONVERSION_RANK (t1) + CONVERSION_RANK (t2)
7976 == cr_std + cr_promotion)
7977 && t1->kind == ck_std
7978 && t2->kind == ck_std
7979 && TREE_CODE (t1->type) == INTEGER_TYPE
7980 && TREE_CODE (t2->type) == INTEGER_TYPE
7981 && (TYPE_PRECISION (t1->type)
7982 == TYPE_PRECISION (t2->type))
7983 && (TYPE_UNSIGNED (t1->u.next->type)
7984 || (TREE_CODE (t1->u.next->type)
7987 tree type = t1->u.next->type;
7989 struct z_candidate *w, *l;
7991 type1 = t1->type, type2 = t2->type,
7992 w = cand1, l = cand2;
7994 type1 = t2->type, type2 = t1->type,
7995 w = cand2, l = cand1;
7999 warning (OPT_Wsign_promo, "passing %qT chooses %qT over %qT",
8000 type, type1, type2);
8001 warning (OPT_Wsign_promo, " in call to %qD", w->fn);
8007 if (winner && comp != winner)
8016 /* warn about confusing overload resolution for user-defined conversions,
8017 either between a constructor and a conversion op, or between two
8019 if (winner && warn_conversion && cand1->second_conv
8020 && (!DECL_CONSTRUCTOR_P (cand1->fn) || !DECL_CONSTRUCTOR_P (cand2->fn))
8021 && winner != compare_ics (cand1->second_conv, cand2->second_conv))
8023 struct z_candidate *w, *l;
8024 bool give_warning = false;
8027 w = cand1, l = cand2;
8029 w = cand2, l = cand1;
8031 /* We don't want to complain about `X::operator T1 ()'
8032 beating `X::operator T2 () const', when T2 is a no less
8033 cv-qualified version of T1. */
8034 if (DECL_CONTEXT (w->fn) == DECL_CONTEXT (l->fn)
8035 && !DECL_CONSTRUCTOR_P (w->fn) && !DECL_CONSTRUCTOR_P (l->fn))
8037 tree t = TREE_TYPE (TREE_TYPE (l->fn));
8038 tree f = TREE_TYPE (TREE_TYPE (w->fn));
8040 if (TREE_CODE (t) == TREE_CODE (f) && POINTER_TYPE_P (t))
8045 if (!comp_ptr_ttypes (t, f))
8046 give_warning = true;
8049 give_warning = true;
8055 tree source = source_type (w->convs[0]);
8056 if (! DECL_CONSTRUCTOR_P (w->fn))
8057 source = TREE_TYPE (source);
8058 if (warning (OPT_Wconversion, "choosing %qD over %qD", w->fn, l->fn)
8059 && warning (OPT_Wconversion, " for conversion from %qT to %qT",
8060 source, w->second_conv->type))
8062 inform (input_location, " because conversion sequence for the argument is better");
8073 F1 is a non-template function and F2 is a template function
8076 if (!cand1->template_decl && cand2->template_decl)
8078 else if (cand1->template_decl && !cand2->template_decl)
8082 F1 and F2 are template functions and the function template for F1 is
8083 more specialized than the template for F2 according to the partial
8086 if (cand1->template_decl && cand2->template_decl)
8088 winner = more_specialized_fn
8089 (TI_TEMPLATE (cand1->template_decl),
8090 TI_TEMPLATE (cand2->template_decl),
8091 /* [temp.func.order]: The presence of unused ellipsis and default
8092 arguments has no effect on the partial ordering of function
8093 templates. add_function_candidate() will not have
8094 counted the "this" argument for constructors. */
8095 cand1->num_convs + DECL_CONSTRUCTOR_P (cand1->fn));
8101 the context is an initialization by user-defined conversion (see
8102 _dcl.init_ and _over.match.user_) and the standard conversion
8103 sequence from the return type of F1 to the destination type (i.e.,
8104 the type of the entity being initialized) is a better conversion
8105 sequence than the standard conversion sequence from the return type
8106 of F2 to the destination type. */
8108 if (cand1->second_conv)
8110 winner = compare_ics (cand1->second_conv, cand2->second_conv);
8115 /* Check whether we can discard a builtin candidate, either because we
8116 have two identical ones or matching builtin and non-builtin candidates.
8118 (Pedantically in the latter case the builtin which matched the user
8119 function should not be added to the overload set, but we spot it here.
8122 ... the builtin candidates include ...
8123 - do not have the same parameter type list as any non-template
8124 non-member candidate. */
8126 if (TREE_CODE (cand1->fn) == IDENTIFIER_NODE
8127 || TREE_CODE (cand2->fn) == IDENTIFIER_NODE)
8129 for (i = 0; i < len; ++i)
8130 if (!same_type_p (cand1->convs[i]->type,
8131 cand2->convs[i]->type))
8133 if (i == cand1->num_convs)
8135 if (cand1->fn == cand2->fn)
8136 /* Two built-in candidates; arbitrarily pick one. */
8138 else if (TREE_CODE (cand1->fn) == IDENTIFIER_NODE)
8139 /* cand1 is built-in; prefer cand2. */
8142 /* cand2 is built-in; prefer cand1. */
8147 /* If the two function declarations represent the same function (this can
8148 happen with declarations in multiple scopes and arg-dependent lookup),
8149 arbitrarily choose one. But first make sure the default args we're
8151 if (DECL_P (cand1->fn) && DECL_P (cand2->fn)
8152 && equal_functions (cand1->fn, cand2->fn))
8154 tree parms1 = TYPE_ARG_TYPES (TREE_TYPE (cand1->fn));
8155 tree parms2 = TYPE_ARG_TYPES (TREE_TYPE (cand2->fn));
8157 gcc_assert (!DECL_CONSTRUCTOR_P (cand1->fn));
8159 for (i = 0; i < len; ++i)
8161 /* Don't crash if the fn is variadic. */
8164 parms1 = TREE_CHAIN (parms1);
8165 parms2 = TREE_CHAIN (parms2);
8169 parms1 = TREE_CHAIN (parms1);
8171 parms2 = TREE_CHAIN (parms2);
8175 if (!cp_tree_equal (TREE_PURPOSE (parms1),
8176 TREE_PURPOSE (parms2)))
8180 permerror (input_location, "default argument mismatch in "
8181 "overload resolution");
8182 inform (input_location,
8183 " candidate 1: %q+#F", cand1->fn);
8184 inform (input_location,
8185 " candidate 2: %q+#F", cand2->fn);
8188 add_warning (cand1, cand2);
8191 parms1 = TREE_CHAIN (parms1);
8192 parms2 = TREE_CHAIN (parms2);
8200 /* Extension: If the worst conversion for one candidate is worse than the
8201 worst conversion for the other, take the first. */
8204 conversion_rank rank1 = cr_identity, rank2 = cr_identity;
8205 struct z_candidate *w = 0, *l = 0;
8207 for (i = 0; i < len; ++i)
8209 if (CONVERSION_RANK (cand1->convs[i+off1]) > rank1)
8210 rank1 = CONVERSION_RANK (cand1->convs[i+off1]);
8211 if (CONVERSION_RANK (cand2->convs[i + off2]) > rank2)
8212 rank2 = CONVERSION_RANK (cand2->convs[i + off2]);
8215 winner = 1, w = cand1, l = cand2;
8217 winner = -1, w = cand2, l = cand1;
8220 /* Don't choose a deleted function over ambiguity. */
8221 if (DECL_P (w->fn) && DECL_DELETED_FN (w->fn))
8225 pedwarn (input_location, 0,
8226 "ISO C++ says that these are ambiguous, even "
8227 "though the worst conversion for the first is better than "
8228 "the worst conversion for the second:");
8229 print_z_candidate (_("candidate 1:"), w);
8230 print_z_candidate (_("candidate 2:"), l);
8238 gcc_assert (!winner);
8242 /* Given a list of candidates for overloading, find the best one, if any.
8243 This algorithm has a worst case of O(2n) (winner is last), and a best
8244 case of O(n/2) (totally ambiguous); much better than a sorting
8247 static struct z_candidate *
8248 tourney (struct z_candidate *candidates)
8250 struct z_candidate *champ = candidates, *challenger;
8252 int champ_compared_to_predecessor = 0;
8254 /* Walk through the list once, comparing each current champ to the next
8255 candidate, knocking out a candidate or two with each comparison. */
8257 for (challenger = champ->next; challenger; )
8259 fate = joust (champ, challenger, 0);
8261 challenger = challenger->next;
8266 champ = challenger->next;
8269 champ_compared_to_predecessor = 0;
8274 champ_compared_to_predecessor = 1;
8277 challenger = champ->next;
8281 /* Make sure the champ is better than all the candidates it hasn't yet
8282 been compared to. */
8284 for (challenger = candidates;
8286 && !(champ_compared_to_predecessor && challenger->next == champ);
8287 challenger = challenger->next)
8289 fate = joust (champ, challenger, 0);
8297 /* Returns nonzero if things of type FROM can be converted to TO. */
8300 can_convert (tree to, tree from)
8302 return can_convert_arg (to, from, NULL_TREE, LOOKUP_IMPLICIT);
8305 /* Returns nonzero if ARG (of type FROM) can be converted to TO. */
8308 can_convert_arg (tree to, tree from, tree arg, int flags)
8314 /* Get the high-water mark for the CONVERSION_OBSTACK. */
8315 p = conversion_obstack_alloc (0);
8317 t = implicit_conversion (to, from, arg, /*c_cast_p=*/false,
8319 ok_p = (t && !t->bad_p);
8321 /* Free all the conversions we allocated. */
8322 obstack_free (&conversion_obstack, p);
8327 /* Like can_convert_arg, but allows dubious conversions as well. */
8330 can_convert_arg_bad (tree to, tree from, tree arg, int flags)
8335 /* Get the high-water mark for the CONVERSION_OBSTACK. */
8336 p = conversion_obstack_alloc (0);
8337 /* Try to perform the conversion. */
8338 t = implicit_conversion (to, from, arg, /*c_cast_p=*/false,
8340 /* Free all the conversions we allocated. */
8341 obstack_free (&conversion_obstack, p);
8346 /* Convert EXPR to TYPE. Return the converted expression.
8348 Note that we allow bad conversions here because by the time we get to
8349 this point we are committed to doing the conversion. If we end up
8350 doing a bad conversion, convert_like will complain. */
8353 perform_implicit_conversion_flags (tree type, tree expr, tsubst_flags_t complain, int flags)
8358 if (error_operand_p (expr))
8359 return error_mark_node;
8361 /* Get the high-water mark for the CONVERSION_OBSTACK. */
8362 p = conversion_obstack_alloc (0);
8364 conv = implicit_conversion (type, TREE_TYPE (expr), expr,
8370 if (complain & tf_error)
8372 /* If expr has unknown type, then it is an overloaded function.
8373 Call instantiate_type to get good error messages. */
8374 if (TREE_TYPE (expr) == unknown_type_node)
8375 instantiate_type (type, expr, complain);
8376 else if (invalid_nonstatic_memfn_p (expr, complain))
8377 /* We gave an error. */;
8379 error ("could not convert %qE from %qT to %qT", expr,
8380 TREE_TYPE (expr), type);
8382 expr = error_mark_node;
8384 else if (processing_template_decl)
8386 /* In a template, we are only concerned about determining the
8387 type of non-dependent expressions, so we do not have to
8388 perform the actual conversion. */
8389 if (TREE_TYPE (expr) != type)
8390 expr = build_nop (type, expr);
8393 expr = convert_like (conv, expr, complain);
8395 /* Free all the conversions we allocated. */
8396 obstack_free (&conversion_obstack, p);
8402 perform_implicit_conversion (tree type, tree expr, tsubst_flags_t complain)
8404 return perform_implicit_conversion_flags (type, expr, complain, LOOKUP_IMPLICIT);
8407 /* Convert EXPR to TYPE (as a direct-initialization) if that is
8408 permitted. If the conversion is valid, the converted expression is
8409 returned. Otherwise, NULL_TREE is returned, except in the case
8410 that TYPE is a class type; in that case, an error is issued. If
8411 C_CAST_P is true, then this direct-initialization is taking
8412 place as part of a static_cast being attempted as part of a C-style
8416 perform_direct_initialization_if_possible (tree type,
8419 tsubst_flags_t complain)
8424 if (type == error_mark_node || error_operand_p (expr))
8425 return error_mark_node;
8428 If the destination type is a (possibly cv-qualified) class type:
8430 -- If the initialization is direct-initialization ...,
8431 constructors are considered. ... If no constructor applies, or
8432 the overload resolution is ambiguous, the initialization is
8434 if (CLASS_TYPE_P (type))
8436 VEC(tree,gc) *args = make_tree_vector_single (expr);
8437 expr = build_special_member_call (NULL_TREE, complete_ctor_identifier,
8438 &args, type, LOOKUP_NORMAL, complain);
8439 release_tree_vector (args);
8440 return build_cplus_new (type, expr, complain);
8443 /* Get the high-water mark for the CONVERSION_OBSTACK. */
8444 p = conversion_obstack_alloc (0);
8446 conv = implicit_conversion (type, TREE_TYPE (expr), expr,
8449 if (!conv || conv->bad_p)
8452 expr = convert_like_real (conv, expr, NULL_TREE, 0, 0,
8453 /*issue_conversion_warnings=*/false,
8457 /* Free all the conversions we allocated. */
8458 obstack_free (&conversion_obstack, p);
8463 /* DECL is a VAR_DECL whose type is a REFERENCE_TYPE. The reference
8464 is being bound to a temporary. Create and return a new VAR_DECL
8465 with the indicated TYPE; this variable will store the value to
8466 which the reference is bound. */
8469 make_temporary_var_for_ref_to_temp (tree decl, tree type)
8473 /* Create the variable. */
8474 var = create_temporary_var (type);
8476 /* Register the variable. */
8477 if (TREE_STATIC (decl))
8479 /* Namespace-scope or local static; give it a mangled name. */
8482 TREE_STATIC (var) = 1;
8483 name = mangle_ref_init_variable (decl);
8484 DECL_NAME (var) = name;
8485 SET_DECL_ASSEMBLER_NAME (var, name);
8486 var = pushdecl_top_level (var);
8489 /* Create a new cleanup level if necessary. */
8490 maybe_push_cleanup_level (type);
8495 /* EXPR is the initializer for a variable DECL of reference or
8496 std::initializer_list type. Create, push and return a new VAR_DECL
8497 for the initializer so that it will live as long as DECL. Any
8498 cleanup for the new variable is returned through CLEANUP, and the
8499 code to initialize the new variable is returned through INITP. */
8502 set_up_extended_ref_temp (tree decl, tree expr, tree *cleanup, tree *initp)
8508 /* Create the temporary variable. */
8509 type = TREE_TYPE (expr);
8510 var = make_temporary_var_for_ref_to_temp (decl, type);
8511 layout_decl (var, 0);
8512 /* If the rvalue is the result of a function call it will be
8513 a TARGET_EXPR. If it is some other construct (such as a
8514 member access expression where the underlying object is
8515 itself the result of a function call), turn it into a
8516 TARGET_EXPR here. It is important that EXPR be a
8517 TARGET_EXPR below since otherwise the INIT_EXPR will
8518 attempt to make a bitwise copy of EXPR to initialize
8520 if (TREE_CODE (expr) != TARGET_EXPR)
8521 expr = get_target_expr (expr);
8523 /* If the initializer is constant, put it in DECL_INITIAL so we get
8524 static initialization and use in constant expressions. */
8525 init = maybe_constant_init (expr);
8526 if (TREE_CONSTANT (init))
8528 if (literal_type_p (type) && CP_TYPE_CONST_NON_VOLATILE_P (type))
8530 /* 5.19 says that a constant expression can include an
8531 lvalue-rvalue conversion applied to "a glvalue of literal type
8532 that refers to a non-volatile temporary object initialized
8533 with a constant expression". Rather than try to communicate
8534 that this VAR_DECL is a temporary, just mark it constexpr.
8536 Currently this is only useful for initializer_list temporaries,
8537 since reference vars can't appear in constant expressions. */
8538 DECL_DECLARED_CONSTEXPR_P (var) = true;
8539 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (var) = true;
8540 TREE_CONSTANT (var) = true;
8542 DECL_INITIAL (var) = init;
8546 /* Create the INIT_EXPR that will initialize the temporary
8548 init = build2 (INIT_EXPR, type, var, expr);
8549 if (at_function_scope_p ())
8551 add_decl_expr (var);
8553 if (TREE_STATIC (var))
8554 init = add_stmt_to_compound (init, register_dtor_fn (var));
8556 *cleanup = cxx_maybe_build_cleanup (var, tf_warning_or_error);
8558 /* We must be careful to destroy the temporary only
8559 after its initialization has taken place. If the
8560 initialization throws an exception, then the
8561 destructor should not be run. We cannot simply
8562 transform INIT into something like:
8564 (INIT, ({ CLEANUP_STMT; }))
8566 because emit_local_var always treats the
8567 initializer as a full-expression. Thus, the
8568 destructor would run too early; it would run at the
8569 end of initializing the reference variable, rather
8570 than at the end of the block enclosing the
8573 The solution is to pass back a cleanup expression
8574 which the caller is responsible for attaching to
8575 the statement tree. */
8579 rest_of_decl_compilation (var, /*toplev=*/1, at_eof);
8580 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
8581 static_aggregates = tree_cons (NULL_TREE, var,
8589 /* Convert EXPR to the indicated reference TYPE, in a way suitable for
8590 initializing a variable of that TYPE. If DECL is non-NULL, it is
8591 the VAR_DECL being initialized with the EXPR. (In that case, the
8592 type of DECL will be TYPE.) If DECL is non-NULL, then CLEANUP must
8593 also be non-NULL, and with *CLEANUP initialized to NULL. Upon
8594 return, if *CLEANUP is no longer NULL, it will be an expression
8595 that should be pushed as a cleanup after the returned expression
8596 is used to initialize DECL.
8598 Return the converted expression. */
8601 initialize_reference (tree type, tree expr, tree decl, tree *cleanup,
8602 int flags, tsubst_flags_t complain)
8607 if (type == error_mark_node || error_operand_p (expr))
8608 return error_mark_node;
8610 /* Get the high-water mark for the CONVERSION_OBSTACK. */
8611 p = conversion_obstack_alloc (0);
8613 conv = reference_binding (type, TREE_TYPE (expr), expr, /*c_cast_p=*/false,
8615 if (!conv || conv->bad_p)
8617 if (complain & tf_error)
8620 convert_like (conv, expr, complain);
8621 else if (!CP_TYPE_CONST_P (TREE_TYPE (type))
8622 && !TYPE_REF_IS_RVALUE (type)
8623 && !real_lvalue_p (expr))
8624 error ("invalid initialization of non-const reference of "
8625 "type %qT from an rvalue of type %qT",
8626 type, TREE_TYPE (expr));
8628 error ("invalid initialization of reference of type "
8629 "%qT from expression of type %qT", type,
8632 return error_mark_node;
8635 /* If DECL is non-NULL, then this special rule applies:
8639 The temporary to which the reference is bound or the temporary
8640 that is the complete object to which the reference is bound
8641 persists for the lifetime of the reference.
8643 The temporaries created during the evaluation of the expression
8644 initializing the reference, except the temporary to which the
8645 reference is bound, are destroyed at the end of the
8646 full-expression in which they are created.
8648 In that case, we store the converted expression into a new
8649 VAR_DECL in a new scope.
8651 However, we want to be careful not to create temporaries when
8652 they are not required. For example, given:
8655 struct D : public B {};
8659 there is no need to copy the return value from "f"; we can just
8660 extend its lifetime. Similarly, given:
8663 struct T { operator S(); };
8667 we can extend the lifetime of the return value of the conversion
8669 gcc_assert (conv->kind == ck_ref_bind);
8673 tree base_conv_type;
8675 gcc_assert (complain == tf_warning_or_error);
8677 /* Skip over the REF_BIND. */
8678 conv = conv->u.next;
8679 /* If the next conversion is a BASE_CONV, skip that too -- but
8680 remember that the conversion was required. */
8681 if (conv->kind == ck_base)
8683 base_conv_type = conv->type;
8684 conv = conv->u.next;
8687 base_conv_type = NULL_TREE;
8688 /* Perform the remainder of the conversion. */
8689 expr = convert_like_real (conv, expr,
8690 /*fn=*/NULL_TREE, /*argnum=*/0,
8692 /*issue_conversion_warnings=*/true,
8695 if (error_operand_p (expr))
8696 expr = error_mark_node;
8699 if (!lvalue_or_rvalue_with_address_p (expr))
8702 var = set_up_extended_ref_temp (decl, expr, cleanup, &init);
8703 /* Use its address to initialize the reference variable. */
8704 expr = build_address (var);
8706 expr = convert_to_base (expr,
8707 build_pointer_type (base_conv_type),
8708 /*check_access=*/true,
8709 /*nonnull=*/true, complain);
8711 expr = build2 (COMPOUND_EXPR, TREE_TYPE (expr), init, expr);
8714 /* Take the address of EXPR. */
8715 expr = cp_build_addr_expr (expr, complain);
8716 /* If a BASE_CONV was required, perform it now. */
8718 expr = (perform_implicit_conversion
8719 (build_pointer_type (base_conv_type), expr,
8721 expr = build_nop (type, expr);
8725 /* Perform the conversion. */
8726 expr = convert_like (conv, expr, complain);
8728 /* Free all the conversions we allocated. */
8729 obstack_free (&conversion_obstack, p);
8734 /* Returns true iff TYPE is some variant of std::initializer_list. */
8737 is_std_init_list (tree type)
8739 /* Look through typedefs. */
8742 type = TYPE_MAIN_VARIANT (type);
8743 return (CLASS_TYPE_P (type)
8744 && CP_TYPE_CONTEXT (type) == std_node
8745 && strcmp (TYPE_NAME_STRING (type), "initializer_list") == 0);
8748 /* Returns true iff DECL is a list constructor: i.e. a constructor which
8749 will accept an argument list of a single std::initializer_list<T>. */
8752 is_list_ctor (tree decl)
8754 tree args = FUNCTION_FIRST_USER_PARMTYPE (decl);
8757 if (!args || args == void_list_node)
8760 arg = non_reference (TREE_VALUE (args));
8761 if (!is_std_init_list (arg))
8764 args = TREE_CHAIN (args);
8766 if (args && args != void_list_node && !TREE_PURPOSE (args))
8767 /* There are more non-defaulted parms. */
8773 #include "gt-cp-call.h"