2008-05-30 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / cp / call.c
blob0948c790c41e3d7cf11bc33f4547312d32055b84
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
4 Free Software Foundation, Inc.
5 Contributed by Michael Tiemann (tiemann@cygnus.com) and
6 modified by Brendan Kehoe (brendan@cygnus.com).
8 This file is part of GCC.
10 GCC is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3, or (at your option)
13 any later version.
15 GCC is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with GCC; see the file COPYING3. If not see
22 <http://www.gnu.org/licenses/>. */
25 /* High-level class interface. */
27 #include "config.h"
28 #include "system.h"
29 #include "coretypes.h"
30 #include "tm.h"
31 #include "tree.h"
32 #include "cp-tree.h"
33 #include "output.h"
34 #include "flags.h"
35 #include "rtl.h"
36 #include "toplev.h"
37 #include "expr.h"
38 #include "diagnostic.h"
39 #include "intl.h"
40 #include "target.h"
41 #include "convert.h"
42 #include "langhooks.h"
44 /* The various kinds of conversion. */
46 typedef enum conversion_kind {
47 ck_identity,
48 ck_lvalue,
49 ck_qual,
50 ck_std,
51 ck_ptr,
52 ck_pmem,
53 ck_base,
54 ck_ref_bind,
55 ck_user,
56 ck_ambig,
57 ck_rvalue
58 } conversion_kind;
60 /* The rank of the conversion. Order of the enumerals matters; better
61 conversions should come earlier in the list. */
63 typedef enum conversion_rank {
64 cr_identity,
65 cr_exact,
66 cr_promotion,
67 cr_std,
68 cr_pbool,
69 cr_user,
70 cr_ellipsis,
71 cr_bad
72 } conversion_rank;
74 /* An implicit conversion sequence, in the sense of [over.best.ics].
75 The first conversion to be performed is at the end of the chain.
76 That conversion is always a cr_identity conversion. */
78 typedef struct conversion conversion;
79 struct conversion {
80 /* The kind of conversion represented by this step. */
81 conversion_kind kind;
82 /* The rank of this conversion. */
83 conversion_rank rank;
84 BOOL_BITFIELD user_conv_p : 1;
85 BOOL_BITFIELD ellipsis_p : 1;
86 BOOL_BITFIELD this_p : 1;
87 BOOL_BITFIELD bad_p : 1;
88 /* If KIND is ck_ref_bind ck_base_conv, true to indicate that a
89 temporary should be created to hold the result of the
90 conversion. */
91 BOOL_BITFIELD need_temporary_p : 1;
92 /* If KIND is ck_ptr or ck_pmem, true to indicate that a conversion
93 from a pointer-to-derived to pointer-to-base is being performed. */
94 BOOL_BITFIELD base_p : 1;
95 /* If KIND is ck_ref_bind, true when either an lvalue reference is
96 being bound to an lvalue expression or an rvalue reference is
97 being bound to an rvalue expression. */
98 BOOL_BITFIELD rvaluedness_matches_p: 1;
99 /* The type of the expression resulting from the conversion. */
100 tree type;
101 union {
102 /* The next conversion in the chain. Since the conversions are
103 arranged from outermost to innermost, the NEXT conversion will
104 actually be performed before this conversion. This variant is
105 used only when KIND is neither ck_identity nor ck_ambig. */
106 conversion *next;
107 /* The expression at the beginning of the conversion chain. This
108 variant is used only if KIND is ck_identity or ck_ambig. */
109 tree expr;
110 } u;
111 /* The function candidate corresponding to this conversion
112 sequence. This field is only used if KIND is ck_user. */
113 struct z_candidate *cand;
116 #define CONVERSION_RANK(NODE) \
117 ((NODE)->bad_p ? cr_bad \
118 : (NODE)->ellipsis_p ? cr_ellipsis \
119 : (NODE)->user_conv_p ? cr_user \
120 : (NODE)->rank)
122 static struct obstack conversion_obstack;
123 static bool conversion_obstack_initialized;
125 static struct z_candidate * tourney (struct z_candidate *);
126 static int equal_functions (tree, tree);
127 static int joust (struct z_candidate *, struct z_candidate *, bool);
128 static int compare_ics (conversion *, conversion *);
129 static tree build_over_call (struct z_candidate *, int, tsubst_flags_t);
130 static tree build_java_interface_fn_ref (tree, tree);
131 #define convert_like(CONV, EXPR, COMPLAIN) \
132 convert_like_real ((CONV), (EXPR), NULL_TREE, 0, 0, \
133 /*issue_conversion_warnings=*/true, \
134 /*c_cast_p=*/false, (COMPLAIN))
135 #define convert_like_with_context(CONV, EXPR, FN, ARGNO, COMPLAIN ) \
136 convert_like_real ((CONV), (EXPR), (FN), (ARGNO), 0, \
137 /*issue_conversion_warnings=*/true, \
138 /*c_cast_p=*/false, (COMPLAIN))
139 static tree convert_like_real (conversion *, tree, tree, int, int, bool,
140 bool, tsubst_flags_t);
141 static void op_error (enum tree_code, enum tree_code, tree, tree,
142 tree, const char *);
143 static tree build_object_call (tree, tree, tsubst_flags_t);
144 static tree resolve_args (tree);
145 static struct z_candidate *build_user_type_conversion_1 (tree, tree, int);
146 static void print_z_candidate (const char *, struct z_candidate *);
147 static void print_z_candidates (struct z_candidate *);
148 static tree build_this (tree);
149 static struct z_candidate *splice_viable (struct z_candidate *, bool, bool *);
150 static bool any_strictly_viable (struct z_candidate *);
151 static struct z_candidate *add_template_candidate
152 (struct z_candidate **, tree, tree, tree, tree, tree,
153 tree, tree, int, unification_kind_t);
154 static struct z_candidate *add_template_candidate_real
155 (struct z_candidate **, tree, tree, tree, tree, tree,
156 tree, tree, int, tree, unification_kind_t);
157 static struct z_candidate *add_template_conv_candidate
158 (struct z_candidate **, tree, tree, tree, tree, tree, tree);
159 static void add_builtin_candidates
160 (struct z_candidate **, enum tree_code, enum tree_code,
161 tree, tree *, int);
162 static void add_builtin_candidate
163 (struct z_candidate **, enum tree_code, enum tree_code,
164 tree, tree, tree, tree *, tree *, int);
165 static bool is_complete (tree);
166 static void build_builtin_candidate
167 (struct z_candidate **, tree, tree, tree, tree *, tree *,
168 int);
169 static struct z_candidate *add_conv_candidate
170 (struct z_candidate **, tree, tree, tree, tree, tree);
171 static struct z_candidate *add_function_candidate
172 (struct z_candidate **, tree, tree, tree, tree, tree, int);
173 static conversion *implicit_conversion (tree, tree, tree, bool, int);
174 static conversion *standard_conversion (tree, tree, tree, bool, int);
175 static conversion *reference_binding (tree, tree, tree, bool, int);
176 static conversion *build_conv (conversion_kind, tree, conversion *);
177 static bool is_subseq (conversion *, conversion *);
178 static conversion *maybe_handle_ref_bind (conversion **);
179 static void maybe_handle_implicit_object (conversion **);
180 static struct z_candidate *add_candidate
181 (struct z_candidate **, tree, tree, size_t,
182 conversion **, tree, tree, int);
183 static tree source_type (conversion *);
184 static void add_warning (struct z_candidate *, struct z_candidate *);
185 static bool reference_related_p (tree, tree);
186 static bool reference_compatible_p (tree, tree);
187 static conversion *convert_class_to_reference (tree, tree, tree);
188 static conversion *direct_reference_binding (tree, conversion *);
189 static bool promoted_arithmetic_type_p (tree);
190 static conversion *conditional_conversion (tree, tree);
191 static char *name_as_c_string (tree, tree, bool *);
192 static tree call_builtin_trap (void);
193 static tree prep_operand (tree);
194 static void add_candidates (tree, tree, tree, bool, tree, tree,
195 int, struct z_candidate **);
196 static conversion *merge_conversion_sequences (conversion *, conversion *);
197 static bool magic_varargs_p (tree);
198 typedef void (*diagnostic_fn_t) (const char *, ...) ATTRIBUTE_GCC_CXXDIAG(1,2);
199 static tree build_temp (tree, tree, int, diagnostic_fn_t *);
201 /* Returns nonzero iff the destructor name specified in NAME matches BASETYPE.
202 NAME can take many forms... */
204 bool
205 check_dtor_name (tree basetype, tree name)
207 /* Just accept something we've already complained about. */
208 if (name == error_mark_node)
209 return true;
211 if (TREE_CODE (name) == TYPE_DECL)
212 name = TREE_TYPE (name);
213 else if (TYPE_P (name))
214 /* OK */;
215 else if (TREE_CODE (name) == IDENTIFIER_NODE)
217 if ((MAYBE_CLASS_TYPE_P (basetype)
218 && name == constructor_name (basetype))
219 || (TREE_CODE (basetype) == ENUMERAL_TYPE
220 && name == TYPE_IDENTIFIER (basetype)))
221 return true;
222 else
223 name = get_type_value (name);
225 else
227 /* In the case of:
229 template <class T> struct S { ~S(); };
230 int i;
231 i.~S();
233 NAME will be a class template. */
234 gcc_assert (DECL_CLASS_TEMPLATE_P (name));
235 return false;
238 if (!name)
239 return false;
240 return same_type_p (TYPE_MAIN_VARIANT (basetype), TYPE_MAIN_VARIANT (name));
243 /* We want the address of a function or method. We avoid creating a
244 pointer-to-member function. */
246 tree
247 build_addr_func (tree function)
249 tree type = TREE_TYPE (function);
251 /* We have to do these by hand to avoid real pointer to member
252 functions. */
253 if (TREE_CODE (type) == METHOD_TYPE)
255 if (TREE_CODE (function) == OFFSET_REF)
257 tree object = build_address (TREE_OPERAND (function, 0));
258 return get_member_function_from_ptrfunc (&object,
259 TREE_OPERAND (function, 1));
261 function = build_address (function);
263 else
264 function = decay_conversion (function);
266 return function;
269 /* Build a CALL_EXPR, we can handle FUNCTION_TYPEs, METHOD_TYPEs, or
270 POINTER_TYPE to those. Note, pointer to member function types
271 (TYPE_PTRMEMFUNC_P) must be handled by our callers. There are
272 two variants. build_call_a is the primitive taking an array of
273 arguments, while build_call_n is a wrapper that handles varargs. */
275 tree
276 build_call_n (tree function, int n, ...)
278 if (n == 0)
279 return build_call_a (function, 0, NULL);
280 else
282 tree *argarray = (tree *) alloca (n * sizeof (tree));
283 va_list ap;
284 int i;
286 va_start (ap, n);
287 for (i = 0; i < n; i++)
288 argarray[i] = va_arg (ap, tree);
289 va_end (ap);
290 return build_call_a (function, n, argarray);
294 tree
295 build_call_a (tree function, int n, tree *argarray)
297 int is_constructor = 0;
298 int nothrow;
299 tree decl;
300 tree result_type;
301 tree fntype;
302 int i;
304 function = build_addr_func (function);
306 gcc_assert (TYPE_PTR_P (TREE_TYPE (function)));
307 fntype = TREE_TYPE (TREE_TYPE (function));
308 gcc_assert (TREE_CODE (fntype) == FUNCTION_TYPE
309 || TREE_CODE (fntype) == METHOD_TYPE);
310 result_type = TREE_TYPE (fntype);
312 if (TREE_CODE (function) == ADDR_EXPR
313 && TREE_CODE (TREE_OPERAND (function, 0)) == FUNCTION_DECL)
315 decl = TREE_OPERAND (function, 0);
316 if (!TREE_USED (decl))
318 /* We invoke build_call directly for several library
319 functions. These may have been declared normally if
320 we're building libgcc, so we can't just check
321 DECL_ARTIFICIAL. */
322 gcc_assert (DECL_ARTIFICIAL (decl)
323 || !strncmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
324 "__", 2));
325 mark_used (decl);
328 else
329 decl = NULL_TREE;
331 /* We check both the decl and the type; a function may be known not to
332 throw without being declared throw(). */
333 nothrow = ((decl && TREE_NOTHROW (decl))
334 || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
336 if (decl && TREE_THIS_VOLATILE (decl) && cfun)
337 current_function_returns_abnormally = 1;
339 if (decl && TREE_DEPRECATED (decl))
340 warn_deprecated_use (decl);
341 require_complete_eh_spec_types (fntype, decl);
343 if (decl && DECL_CONSTRUCTOR_P (decl))
344 is_constructor = 1;
346 /* Don't pass empty class objects by value. This is useful
347 for tags in STL, which are used to control overload resolution.
348 We don't need to handle other cases of copying empty classes. */
349 if (! decl || ! DECL_BUILT_IN (decl))
350 for (i = 0; i < n; i++)
351 if (is_empty_class (TREE_TYPE (argarray[i]))
352 && ! TREE_ADDRESSABLE (TREE_TYPE (argarray[i])))
354 tree t = build0 (EMPTY_CLASS_EXPR, TREE_TYPE (argarray[i]));
355 argarray[i] = build2 (COMPOUND_EXPR, TREE_TYPE (t),
356 argarray[i], t);
359 function = build_call_array (result_type, function, n, argarray);
360 TREE_HAS_CONSTRUCTOR (function) = is_constructor;
361 TREE_NOTHROW (function) = nothrow;
363 return function;
366 /* Build something of the form ptr->method (args)
367 or object.method (args). This can also build
368 calls to constructors, and find friends.
370 Member functions always take their class variable
371 as a pointer.
373 INSTANCE is a class instance.
375 NAME is the name of the method desired, usually an IDENTIFIER_NODE.
377 PARMS help to figure out what that NAME really refers to.
379 BASETYPE_PATH, if non-NULL, contains a chain from the type of INSTANCE
380 down to the real instance type to use for access checking. We need this
381 information to get protected accesses correct.
383 FLAGS is the logical disjunction of zero or more LOOKUP_
384 flags. See cp-tree.h for more info.
386 If this is all OK, calls build_function_call with the resolved
387 member function.
389 This function must also handle being called to perform
390 initialization, promotion/coercion of arguments, and
391 instantiation of default parameters.
393 Note that NAME may refer to an instance variable name. If
394 `operator()()' is defined for the type of that field, then we return
395 that result. */
397 /* New overloading code. */
399 typedef struct z_candidate z_candidate;
401 typedef struct candidate_warning candidate_warning;
402 struct candidate_warning {
403 z_candidate *loser;
404 candidate_warning *next;
407 struct z_candidate {
408 /* The FUNCTION_DECL that will be called if this candidate is
409 selected by overload resolution. */
410 tree fn;
411 /* The arguments to use when calling this function. */
412 tree args;
413 /* The implicit conversion sequences for each of the arguments to
414 FN. */
415 conversion **convs;
416 /* The number of implicit conversion sequences. */
417 size_t num_convs;
418 /* If FN is a user-defined conversion, the standard conversion
419 sequence from the type returned by FN to the desired destination
420 type. */
421 conversion *second_conv;
422 int viable;
423 /* If FN is a member function, the binfo indicating the path used to
424 qualify the name of FN at the call site. This path is used to
425 determine whether or not FN is accessible if it is selected by
426 overload resolution. The DECL_CONTEXT of FN will always be a
427 (possibly improper) base of this binfo. */
428 tree access_path;
429 /* If FN is a non-static member function, the binfo indicating the
430 subobject to which the `this' pointer should be converted if FN
431 is selected by overload resolution. The type pointed to the by
432 the `this' pointer must correspond to the most derived class
433 indicated by the CONVERSION_PATH. */
434 tree conversion_path;
435 tree template_decl;
436 candidate_warning *warnings;
437 z_candidate *next;
440 /* Returns true iff T is a null pointer constant in the sense of
441 [conv.ptr]. */
443 bool
444 null_ptr_cst_p (tree t)
446 /* [conv.ptr]
448 A null pointer constant is an integral constant expression
449 (_expr.const_) rvalue of integer type that evaluates to zero. */
450 t = integral_constant_value (t);
451 if (t == null_node)
452 return true;
453 if (CP_INTEGRAL_TYPE_P (TREE_TYPE (t)) && integer_zerop (t))
455 STRIP_NOPS (t);
456 if (!TREE_OVERFLOW (t))
457 return true;
459 return false;
462 /* Returns nonzero if PARMLIST consists of only default parms and/or
463 ellipsis. */
465 bool
466 sufficient_parms_p (const_tree parmlist)
468 for (; parmlist && parmlist != void_list_node;
469 parmlist = TREE_CHAIN (parmlist))
470 if (!TREE_PURPOSE (parmlist))
471 return false;
472 return true;
475 /* Allocate N bytes of memory from the conversion obstack. The memory
476 is zeroed before being returned. */
478 static void *
479 conversion_obstack_alloc (size_t n)
481 void *p;
482 if (!conversion_obstack_initialized)
484 gcc_obstack_init (&conversion_obstack);
485 conversion_obstack_initialized = true;
487 p = obstack_alloc (&conversion_obstack, n);
488 memset (p, 0, n);
489 return p;
492 /* Dynamically allocate a conversion. */
494 static conversion *
495 alloc_conversion (conversion_kind kind)
497 conversion *c;
498 c = (conversion *) conversion_obstack_alloc (sizeof (conversion));
499 c->kind = kind;
500 return c;
503 #ifdef ENABLE_CHECKING
505 /* Make sure that all memory on the conversion obstack has been
506 freed. */
508 void
509 validate_conversion_obstack (void)
511 if (conversion_obstack_initialized)
512 gcc_assert ((obstack_next_free (&conversion_obstack)
513 == obstack_base (&conversion_obstack)));
516 #endif /* ENABLE_CHECKING */
518 /* Dynamically allocate an array of N conversions. */
520 static conversion **
521 alloc_conversions (size_t n)
523 return (conversion **) conversion_obstack_alloc (n * sizeof (conversion *));
526 static conversion *
527 build_conv (conversion_kind code, tree type, conversion *from)
529 conversion *t;
530 conversion_rank rank = CONVERSION_RANK (from);
532 /* We can't use buildl1 here because CODE could be USER_CONV, which
533 takes two arguments. In that case, the caller is responsible for
534 filling in the second argument. */
535 t = alloc_conversion (code);
536 t->type = type;
537 t->u.next = from;
539 switch (code)
541 case ck_ptr:
542 case ck_pmem:
543 case ck_base:
544 case ck_std:
545 if (rank < cr_std)
546 rank = cr_std;
547 break;
549 case ck_qual:
550 if (rank < cr_exact)
551 rank = cr_exact;
552 break;
554 default:
555 break;
557 t->rank = rank;
558 t->user_conv_p = (code == ck_user || from->user_conv_p);
559 t->bad_p = from->bad_p;
560 t->base_p = false;
561 return t;
564 /* Build a representation of the identity conversion from EXPR to
565 itself. The TYPE should match the type of EXPR, if EXPR is non-NULL. */
567 static conversion *
568 build_identity_conv (tree type, tree expr)
570 conversion *c;
572 c = alloc_conversion (ck_identity);
573 c->type = type;
574 c->u.expr = expr;
576 return c;
579 /* Converting from EXPR to TYPE was ambiguous in the sense that there
580 were multiple user-defined conversions to accomplish the job.
581 Build a conversion that indicates that ambiguity. */
583 static conversion *
584 build_ambiguous_conv (tree type, tree expr)
586 conversion *c;
588 c = alloc_conversion (ck_ambig);
589 c->type = type;
590 c->u.expr = expr;
592 return c;
595 tree
596 strip_top_quals (tree t)
598 if (TREE_CODE (t) == ARRAY_TYPE)
599 return t;
600 return cp_build_qualified_type (t, 0);
603 /* Returns the standard conversion path (see [conv]) from type FROM to type
604 TO, if any. For proper handling of null pointer constants, you must
605 also pass the expression EXPR to convert from. If C_CAST_P is true,
606 this conversion is coming from a C-style cast. */
608 static conversion *
609 standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
610 int flags)
612 enum tree_code fcode, tcode;
613 conversion *conv;
614 bool fromref = false;
616 to = non_reference (to);
617 if (TREE_CODE (from) == REFERENCE_TYPE)
619 fromref = true;
620 from = TREE_TYPE (from);
622 to = strip_top_quals (to);
623 from = strip_top_quals (from);
625 if ((TYPE_PTRFN_P (to) || TYPE_PTRMEMFUNC_P (to))
626 && expr && type_unknown_p (expr))
628 expr = instantiate_type (to, expr, tf_conv);
629 if (expr == error_mark_node)
630 return NULL;
631 from = TREE_TYPE (expr);
634 fcode = TREE_CODE (from);
635 tcode = TREE_CODE (to);
637 conv = build_identity_conv (from, expr);
638 if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
640 from = type_decays_to (from);
641 fcode = TREE_CODE (from);
642 conv = build_conv (ck_lvalue, from, conv);
644 else if (fromref || (expr && lvalue_p (expr)))
646 if (expr)
648 tree bitfield_type;
649 bitfield_type = is_bitfield_expr_with_lowered_type (expr);
650 if (bitfield_type)
652 from = strip_top_quals (bitfield_type);
653 fcode = TREE_CODE (from);
656 conv = build_conv (ck_rvalue, from, conv);
659 /* Allow conversion between `__complex__' data types. */
660 if (tcode == COMPLEX_TYPE && fcode == COMPLEX_TYPE)
662 /* The standard conversion sequence to convert FROM to TO is
663 the standard conversion sequence to perform componentwise
664 conversion. */
665 conversion *part_conv = standard_conversion
666 (TREE_TYPE (to), TREE_TYPE (from), NULL_TREE, c_cast_p, flags);
668 if (part_conv)
670 conv = build_conv (part_conv->kind, to, conv);
671 conv->rank = part_conv->rank;
673 else
674 conv = NULL;
676 return conv;
679 if (same_type_p (from, to))
680 return conv;
682 if ((tcode == POINTER_TYPE || TYPE_PTR_TO_MEMBER_P (to))
683 && expr && null_ptr_cst_p (expr))
684 conv = build_conv (ck_std, to, conv);
685 else if ((tcode == INTEGER_TYPE && fcode == POINTER_TYPE)
686 || (tcode == POINTER_TYPE && fcode == INTEGER_TYPE))
688 /* For backwards brain damage compatibility, allow interconversion of
689 pointers and integers with a pedwarn. */
690 conv = build_conv (ck_std, to, conv);
691 conv->bad_p = true;
693 else if (tcode == ENUMERAL_TYPE && fcode == INTEGER_TYPE)
695 /* For backwards brain damage compatibility, allow interconversion of
696 enums and integers with a pedwarn. */
697 conv = build_conv (ck_std, to, conv);
698 conv->bad_p = true;
700 else if ((tcode == POINTER_TYPE && fcode == POINTER_TYPE)
701 || (TYPE_PTRMEM_P (to) && TYPE_PTRMEM_P (from)))
703 tree to_pointee;
704 tree from_pointee;
706 if (tcode == POINTER_TYPE
707 && same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (from),
708 TREE_TYPE (to)))
710 else if (VOID_TYPE_P (TREE_TYPE (to))
711 && !TYPE_PTRMEM_P (from)
712 && TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE)
714 from = build_pointer_type
715 (cp_build_qualified_type (void_type_node,
716 cp_type_quals (TREE_TYPE (from))));
717 conv = build_conv (ck_ptr, from, conv);
719 else if (TYPE_PTRMEM_P (from))
721 tree fbase = TYPE_PTRMEM_CLASS_TYPE (from);
722 tree tbase = TYPE_PTRMEM_CLASS_TYPE (to);
724 if (DERIVED_FROM_P (fbase, tbase)
725 && (same_type_ignoring_top_level_qualifiers_p
726 (TYPE_PTRMEM_POINTED_TO_TYPE (from),
727 TYPE_PTRMEM_POINTED_TO_TYPE (to))))
729 from = build_ptrmem_type (tbase,
730 TYPE_PTRMEM_POINTED_TO_TYPE (from));
731 conv = build_conv (ck_pmem, from, conv);
733 else if (!same_type_p (fbase, tbase))
734 return NULL;
736 else if (MAYBE_CLASS_TYPE_P (TREE_TYPE (from))
737 && MAYBE_CLASS_TYPE_P (TREE_TYPE (to))
738 /* [conv.ptr]
740 An rvalue of type "pointer to cv D," where D is a
741 class type, can be converted to an rvalue of type
742 "pointer to cv B," where B is a base class (clause
743 _class.derived_) of D. If B is an inaccessible
744 (clause _class.access_) or ambiguous
745 (_class.member.lookup_) base class of D, a program
746 that necessitates this conversion is ill-formed.
747 Therefore, we use DERIVED_FROM_P, and do not check
748 access or uniqueness. */
749 && DERIVED_FROM_P (TREE_TYPE (to), TREE_TYPE (from)))
751 from =
752 cp_build_qualified_type (TREE_TYPE (to),
753 cp_type_quals (TREE_TYPE (from)));
754 from = build_pointer_type (from);
755 conv = build_conv (ck_ptr, from, conv);
756 conv->base_p = true;
759 if (tcode == POINTER_TYPE)
761 to_pointee = TREE_TYPE (to);
762 from_pointee = TREE_TYPE (from);
764 else
766 to_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (to);
767 from_pointee = TYPE_PTRMEM_POINTED_TO_TYPE (from);
770 if (same_type_p (from, to))
771 /* OK */;
772 else if (c_cast_p && comp_ptr_ttypes_const (to, from))
773 /* In a C-style cast, we ignore CV-qualification because we
774 are allowed to perform a static_cast followed by a
775 const_cast. */
776 conv = build_conv (ck_qual, to, conv);
777 else if (!c_cast_p && comp_ptr_ttypes (to_pointee, from_pointee))
778 conv = build_conv (ck_qual, to, conv);
779 else if (expr && string_conv_p (to, expr, 0))
780 /* converting from string constant to char *. */
781 conv = build_conv (ck_qual, to, conv);
782 else if (ptr_reasonably_similar (to_pointee, from_pointee))
784 conv = build_conv (ck_ptr, to, conv);
785 conv->bad_p = true;
787 else
788 return NULL;
790 from = to;
792 else if (TYPE_PTRMEMFUNC_P (to) && TYPE_PTRMEMFUNC_P (from))
794 tree fromfn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (from));
795 tree tofn = TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (to));
796 tree fbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fromfn)));
797 tree tbase = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (tofn)));
799 if (!DERIVED_FROM_P (fbase, tbase)
800 || !same_type_p (TREE_TYPE (fromfn), TREE_TYPE (tofn))
801 || !compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)),
802 TREE_CHAIN (TYPE_ARG_TYPES (tofn)))
803 || cp_type_quals (fbase) != cp_type_quals (tbase))
804 return NULL;
806 from = cp_build_qualified_type (tbase, cp_type_quals (fbase));
807 from = build_method_type_directly (from,
808 TREE_TYPE (fromfn),
809 TREE_CHAIN (TYPE_ARG_TYPES (fromfn)));
810 from = build_ptrmemfunc_type (build_pointer_type (from));
811 conv = build_conv (ck_pmem, from, conv);
812 conv->base_p = true;
814 else if (tcode == BOOLEAN_TYPE)
816 /* [conv.bool]
818 An rvalue of arithmetic, enumeration, pointer, or pointer to
819 member type can be converted to an rvalue of type bool. */
820 if (ARITHMETIC_TYPE_P (from)
821 || fcode == ENUMERAL_TYPE
822 || fcode == POINTER_TYPE
823 || TYPE_PTR_TO_MEMBER_P (from))
825 conv = build_conv (ck_std, to, conv);
826 if (fcode == POINTER_TYPE
827 || TYPE_PTRMEM_P (from)
828 || (TYPE_PTRMEMFUNC_P (from)
829 && conv->rank < cr_pbool))
830 conv->rank = cr_pbool;
831 return conv;
834 return NULL;
836 /* We don't check for ENUMERAL_TYPE here because there are no standard
837 conversions to enum type. */
838 /* As an extension, allow conversion to complex type. */
839 else if (ARITHMETIC_TYPE_P (to))
841 if (! (INTEGRAL_CODE_P (fcode) || fcode == REAL_TYPE))
842 return NULL;
843 conv = build_conv (ck_std, to, conv);
845 /* Give this a better rank if it's a promotion. */
846 if (same_type_p (to, type_promotes_to (from))
847 && conv->u.next->rank <= cr_promotion)
848 conv->rank = cr_promotion;
850 else if (fcode == VECTOR_TYPE && tcode == VECTOR_TYPE
851 && vector_types_convertible_p (from, to, false))
852 return build_conv (ck_std, to, conv);
853 else if (MAYBE_CLASS_TYPE_P (to) && MAYBE_CLASS_TYPE_P (from)
854 && is_properly_derived_from (from, to))
856 if (conv->kind == ck_rvalue)
857 conv = conv->u.next;
858 conv = build_conv (ck_base, to, conv);
859 /* The derived-to-base conversion indicates the initialization
860 of a parameter with base type from an object of a derived
861 type. A temporary object is created to hold the result of
862 the conversion unless we're binding directly to a reference. */
863 conv->need_temporary_p = !(flags & LOOKUP_NO_TEMP_BIND);
865 else
866 return NULL;
868 return conv;
871 /* Returns nonzero if T1 is reference-related to T2. */
873 static bool
874 reference_related_p (tree t1, tree t2)
876 t1 = TYPE_MAIN_VARIANT (t1);
877 t2 = TYPE_MAIN_VARIANT (t2);
879 /* [dcl.init.ref]
881 Given types "cv1 T1" and "cv2 T2," "cv1 T1" is reference-related
882 to "cv2 T2" if T1 is the same type as T2, or T1 is a base class
883 of T2. */
884 return (same_type_p (t1, t2)
885 || (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
886 && DERIVED_FROM_P (t1, t2)));
889 /* Returns nonzero if T1 is reference-compatible with T2. */
891 static bool
892 reference_compatible_p (tree t1, tree t2)
894 /* [dcl.init.ref]
896 "cv1 T1" is reference compatible with "cv2 T2" if T1 is
897 reference-related to T2 and cv1 is the same cv-qualification as,
898 or greater cv-qualification than, cv2. */
899 return (reference_related_p (t1, t2)
900 && at_least_as_qualified_p (t1, t2));
903 /* Determine whether or not the EXPR (of class type S) can be
904 converted to T as in [over.match.ref]. */
906 static conversion *
907 convert_class_to_reference (tree reference_type, tree s, tree expr)
909 tree conversions;
910 tree arglist;
911 conversion *conv;
912 tree t;
913 struct z_candidate *candidates;
914 struct z_candidate *cand;
915 bool any_viable_p;
917 conversions = lookup_conversions (s);
918 if (!conversions)
919 return NULL;
921 /* [over.match.ref]
923 Assuming that "cv1 T" is the underlying type of the reference
924 being initialized, and "cv S" is the type of the initializer
925 expression, with S a class type, the candidate functions are
926 selected as follows:
928 --The conversion functions of S and its base classes are
929 considered. Those that are not hidden within S and yield type
930 "reference to cv2 T2", where "cv1 T" is reference-compatible
931 (_dcl.init.ref_) with "cv2 T2", are candidate functions.
933 The argument list has one argument, which is the initializer
934 expression. */
936 candidates = 0;
938 /* Conceptually, we should take the address of EXPR and put it in
939 the argument list. Unfortunately, however, that can result in
940 error messages, which we should not issue now because we are just
941 trying to find a conversion operator. Therefore, we use NULL,
942 cast to the appropriate type. */
943 arglist = build_int_cst (build_pointer_type (s), 0);
944 arglist = build_tree_list (NULL_TREE, arglist);
946 t = TREE_TYPE (reference_type);
948 while (conversions)
950 tree fns = TREE_VALUE (conversions);
952 for (; fns; fns = OVL_NEXT (fns))
954 tree f = OVL_CURRENT (fns);
955 tree t2 = TREE_TYPE (TREE_TYPE (f));
957 cand = NULL;
959 /* If this is a template function, try to get an exact
960 match. */
961 if (TREE_CODE (f) == TEMPLATE_DECL)
963 cand = add_template_candidate (&candidates,
964 f, s,
965 NULL_TREE,
966 arglist,
967 reference_type,
968 TYPE_BINFO (s),
969 TREE_PURPOSE (conversions),
970 LOOKUP_NORMAL,
971 DEDUCE_CONV);
973 if (cand)
975 /* Now, see if the conversion function really returns
976 an lvalue of the appropriate type. From the
977 point of view of unification, simply returning an
978 rvalue of the right type is good enough. */
979 f = cand->fn;
980 t2 = TREE_TYPE (TREE_TYPE (f));
981 if (TREE_CODE (t2) != REFERENCE_TYPE
982 || !reference_compatible_p (t, TREE_TYPE (t2)))
984 candidates = candidates->next;
985 cand = NULL;
989 else if (TREE_CODE (t2) == REFERENCE_TYPE
990 && reference_compatible_p (t, TREE_TYPE (t2)))
991 cand = add_function_candidate (&candidates, f, s, arglist,
992 TYPE_BINFO (s),
993 TREE_PURPOSE (conversions),
994 LOOKUP_NORMAL);
996 if (cand)
998 conversion *identity_conv;
999 /* Build a standard conversion sequence indicating the
1000 binding from the reference type returned by the
1001 function to the desired REFERENCE_TYPE. */
1002 identity_conv
1003 = build_identity_conv (TREE_TYPE (TREE_TYPE
1004 (TREE_TYPE (cand->fn))),
1005 NULL_TREE);
1006 cand->second_conv
1007 = (direct_reference_binding
1008 (reference_type, identity_conv));
1009 cand->second_conv->rvaluedness_matches_p
1010 = TYPE_REF_IS_RVALUE (TREE_TYPE (TREE_TYPE (cand->fn)))
1011 == TYPE_REF_IS_RVALUE (reference_type);
1012 cand->second_conv->bad_p |= cand->convs[0]->bad_p;
1015 conversions = TREE_CHAIN (conversions);
1018 candidates = splice_viable (candidates, pedantic, &any_viable_p);
1019 /* If none of the conversion functions worked out, let our caller
1020 know. */
1021 if (!any_viable_p)
1022 return NULL;
1024 cand = tourney (candidates);
1025 if (!cand)
1026 return NULL;
1028 /* Now that we know that this is the function we're going to use fix
1029 the dummy first argument. */
1030 cand->args = tree_cons (NULL_TREE,
1031 build_this (expr),
1032 TREE_CHAIN (cand->args));
1034 /* Build a user-defined conversion sequence representing the
1035 conversion. */
1036 conv = build_conv (ck_user,
1037 TREE_TYPE (TREE_TYPE (cand->fn)),
1038 build_identity_conv (TREE_TYPE (expr), expr));
1039 conv->cand = cand;
1041 /* Merge it with the standard conversion sequence from the
1042 conversion function's return type to the desired type. */
1043 cand->second_conv = merge_conversion_sequences (conv, cand->second_conv);
1045 if (cand->viable == -1)
1046 conv->bad_p = true;
1048 return cand->second_conv;
1051 /* A reference of the indicated TYPE is being bound directly to the
1052 expression represented by the implicit conversion sequence CONV.
1053 Return a conversion sequence for this binding. */
1055 static conversion *
1056 direct_reference_binding (tree type, conversion *conv)
1058 tree t;
1060 gcc_assert (TREE_CODE (type) == REFERENCE_TYPE);
1061 gcc_assert (TREE_CODE (conv->type) != REFERENCE_TYPE);
1063 t = TREE_TYPE (type);
1065 /* [over.ics.rank]
1067 When a parameter of reference type binds directly
1068 (_dcl.init.ref_) to an argument expression, the implicit
1069 conversion sequence is the identity conversion, unless the
1070 argument expression has a type that is a derived class of the
1071 parameter type, in which case the implicit conversion sequence is
1072 a derived-to-base Conversion.
1074 If the parameter binds directly to the result of applying a
1075 conversion function to the argument expression, the implicit
1076 conversion sequence is a user-defined conversion sequence
1077 (_over.ics.user_), with the second standard conversion sequence
1078 either an identity conversion or, if the conversion function
1079 returns an entity of a type that is a derived class of the
1080 parameter type, a derived-to-base conversion. */
1081 if (!same_type_ignoring_top_level_qualifiers_p (t, conv->type))
1083 /* Represent the derived-to-base conversion. */
1084 conv = build_conv (ck_base, t, conv);
1085 /* We will actually be binding to the base-class subobject in
1086 the derived class, so we mark this conversion appropriately.
1087 That way, convert_like knows not to generate a temporary. */
1088 conv->need_temporary_p = false;
1090 return build_conv (ck_ref_bind, type, conv);
1093 /* Returns the conversion path from type FROM to reference type TO for
1094 purposes of reference binding. For lvalue binding, either pass a
1095 reference type to FROM or an lvalue expression to EXPR. If the
1096 reference will be bound to a temporary, NEED_TEMPORARY_P is set for
1097 the conversion returned. If C_CAST_P is true, this
1098 conversion is coming from a C-style cast. */
1100 static conversion *
1101 reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
1103 conversion *conv = NULL;
1104 tree to = TREE_TYPE (rto);
1105 tree from = rfrom;
1106 tree tfrom;
1107 bool related_p;
1108 bool compatible_p;
1109 cp_lvalue_kind lvalue_p = clk_none;
1111 if (TREE_CODE (to) == FUNCTION_TYPE && expr && type_unknown_p (expr))
1113 expr = instantiate_type (to, expr, tf_none);
1114 if (expr == error_mark_node)
1115 return NULL;
1116 from = TREE_TYPE (expr);
1119 if (TREE_CODE (from) == REFERENCE_TYPE)
1121 /* Anything with reference type is an lvalue. */
1122 lvalue_p = clk_ordinary;
1123 from = TREE_TYPE (from);
1125 else if (expr)
1126 lvalue_p = real_lvalue_p (expr);
1128 tfrom = from;
1129 if ((lvalue_p & clk_bitfield) != 0)
1130 tfrom = unlowered_expr_type (expr);
1132 /* Figure out whether or not the types are reference-related and
1133 reference compatible. We have do do this after stripping
1134 references from FROM. */
1135 related_p = reference_related_p (to, tfrom);
1136 /* If this is a C cast, first convert to an appropriately qualified
1137 type, so that we can later do a const_cast to the desired type. */
1138 if (related_p && c_cast_p
1139 && !at_least_as_qualified_p (to, tfrom))
1140 to = build_qualified_type (to, cp_type_quals (tfrom));
1141 compatible_p = reference_compatible_p (to, tfrom);
1143 /* Directly bind reference when target expression's type is compatible with
1144 the reference and expression is an lvalue. In DR391, the wording in
1145 [8.5.3/5 dcl.init.ref] is changed to also require direct bindings for
1146 const and rvalue references to rvalues of compatible class type. */
1147 if (compatible_p
1148 && (lvalue_p
1149 || (!(flags & LOOKUP_NO_TEMP_BIND)
1150 && (CP_TYPE_CONST_NON_VOLATILE_P(to) || TYPE_REF_IS_RVALUE (rto))
1151 && CLASS_TYPE_P (from))))
1153 /* [dcl.init.ref]
1155 If the initializer expression
1157 -- is an lvalue (but not an lvalue for a bit-field), and "cv1 T1"
1158 is reference-compatible with "cv2 T2,"
1160 the reference is bound directly to the initializer expression
1161 lvalue.
1163 [...]
1164 If the initializer expression is an rvalue, with T2 a class type,
1165 and "cv1 T1" is reference-compatible with "cv2 T2", the reference
1166 is bound to the object represented by the rvalue or to a sub-object
1167 within that object. */
1169 conv = build_identity_conv (tfrom, expr);
1170 conv = direct_reference_binding (rto, conv);
1172 if (flags & LOOKUP_PREFER_RVALUE)
1173 /* The top-level caller requested that we pretend that the lvalue
1174 be treated as an rvalue. */
1175 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1176 else
1177 conv->rvaluedness_matches_p
1178 = (TYPE_REF_IS_RVALUE (rto) == !lvalue_p);
1180 if ((lvalue_p & clk_bitfield) != 0
1181 || ((lvalue_p & clk_packed) != 0 && !TYPE_PACKED (to)))
1182 /* For the purposes of overload resolution, we ignore the fact
1183 this expression is a bitfield or packed field. (In particular,
1184 [over.ics.ref] says specifically that a function with a
1185 non-const reference parameter is viable even if the
1186 argument is a bitfield.)
1188 However, when we actually call the function we must create
1189 a temporary to which to bind the reference. If the
1190 reference is volatile, or isn't const, then we cannot make
1191 a temporary, so we just issue an error when the conversion
1192 actually occurs. */
1193 conv->need_temporary_p = true;
1195 return conv;
1197 /* [class.conv.fct] A conversion function is never used to convert a
1198 (possibly cv-qualified) object to the (possibly cv-qualified) same
1199 object type (or a reference to it), to a (possibly cv-qualified) base
1200 class of that type (or a reference to it).... */
1201 else if (CLASS_TYPE_P (from) && !related_p
1202 && !(flags & LOOKUP_NO_CONVERSION))
1204 /* [dcl.init.ref]
1206 If the initializer expression
1208 -- has a class type (i.e., T2 is a class type) can be
1209 implicitly converted to an lvalue of type "cv3 T3," where
1210 "cv1 T1" is reference-compatible with "cv3 T3". (this
1211 conversion is selected by enumerating the applicable
1212 conversion functions (_over.match.ref_) and choosing the
1213 best one through overload resolution. (_over.match_).
1215 the reference is bound to the lvalue result of the conversion
1216 in the second case. */
1217 conv = convert_class_to_reference (rto, from, expr);
1218 if (conv)
1219 return conv;
1222 /* From this point on, we conceptually need temporaries, even if we
1223 elide them. Only the cases above are "direct bindings". */
1224 if (flags & LOOKUP_NO_TEMP_BIND)
1225 return NULL;
1227 /* [over.ics.rank]
1229 When a parameter of reference type is not bound directly to an
1230 argument expression, the conversion sequence is the one required
1231 to convert the argument expression to the underlying type of the
1232 reference according to _over.best.ics_. Conceptually, this
1233 conversion sequence corresponds to copy-initializing a temporary
1234 of the underlying type with the argument expression. Any
1235 difference in top-level cv-qualification is subsumed by the
1236 initialization itself and does not constitute a conversion. */
1238 /* [dcl.init.ref]
1240 Otherwise, the reference shall be to a non-volatile const type.
1242 Under C++0x, [8.5.3/5 dcl.init.ref] it may also be an rvalue reference */
1243 if (!CP_TYPE_CONST_NON_VOLATILE_P (to) && !TYPE_REF_IS_RVALUE (rto))
1244 return NULL;
1246 /* [dcl.init.ref]
1248 Otherwise, a temporary of type "cv1 T1" is created and
1249 initialized from the initializer expression using the rules for a
1250 non-reference copy initialization. If T1 is reference-related to
1251 T2, cv1 must be the same cv-qualification as, or greater
1252 cv-qualification than, cv2; otherwise, the program is ill-formed. */
1253 if (related_p && !at_least_as_qualified_p (to, from))
1254 return NULL;
1256 /* We're generating a temporary now, but don't bind any more in the
1257 conversion (specifically, don't slice the temporary returned by a
1258 conversion operator). */
1259 flags |= LOOKUP_NO_TEMP_BIND;
1261 conv = implicit_conversion (to, from, expr, c_cast_p,
1262 flags);
1263 if (!conv)
1264 return NULL;
1266 conv = build_conv (ck_ref_bind, rto, conv);
1267 /* This reference binding, unlike those above, requires the
1268 creation of a temporary. */
1269 conv->need_temporary_p = true;
1270 conv->rvaluedness_matches_p = TYPE_REF_IS_RVALUE (rto);
1272 return conv;
1275 /* Returns the implicit conversion sequence (see [over.ics]) from type
1276 FROM to type TO. The optional expression EXPR may affect the
1277 conversion. FLAGS are the usual overloading flags. Only
1278 LOOKUP_NO_CONVERSION is significant. If C_CAST_P is true, this
1279 conversion is coming from a C-style cast. */
1281 static conversion *
1282 implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
1283 int flags)
1285 conversion *conv;
1287 if (from == error_mark_node || to == error_mark_node
1288 || expr == error_mark_node)
1289 return NULL;
1291 if (TREE_CODE (to) == REFERENCE_TYPE)
1292 conv = reference_binding (to, from, expr, c_cast_p, flags);
1293 else
1294 conv = standard_conversion (to, from, expr, c_cast_p, flags);
1296 if (conv)
1297 return conv;
1299 if (expr != NULL_TREE
1300 && (MAYBE_CLASS_TYPE_P (from)
1301 || MAYBE_CLASS_TYPE_P (to))
1302 && (flags & LOOKUP_NO_CONVERSION) == 0)
1304 struct z_candidate *cand;
1305 int convflags = ((flags & LOOKUP_NO_TEMP_BIND)
1306 |LOOKUP_ONLYCONVERTING);
1308 cand = build_user_type_conversion_1 (to, expr, convflags);
1309 if (cand)
1310 conv = cand->second_conv;
1312 /* We used to try to bind a reference to a temporary here, but that
1313 is now handled after the recursive call to this function at the end
1314 of reference_binding. */
1315 return conv;
1318 return NULL;
1321 /* Add a new entry to the list of candidates. Used by the add_*_candidate
1322 functions. */
1324 static struct z_candidate *
1325 add_candidate (struct z_candidate **candidates,
1326 tree fn, tree args,
1327 size_t num_convs, conversion **convs,
1328 tree access_path, tree conversion_path,
1329 int viable)
1331 struct z_candidate *cand = (struct z_candidate *)
1332 conversion_obstack_alloc (sizeof (struct z_candidate));
1334 cand->fn = fn;
1335 cand->args = args;
1336 cand->convs = convs;
1337 cand->num_convs = num_convs;
1338 cand->access_path = access_path;
1339 cand->conversion_path = conversion_path;
1340 cand->viable = viable;
1341 cand->next = *candidates;
1342 *candidates = cand;
1344 return cand;
1347 /* Create an overload candidate for the function or method FN called with
1348 the argument list ARGLIST and add it to CANDIDATES. FLAGS is passed on
1349 to implicit_conversion.
1351 CTYPE, if non-NULL, is the type we want to pretend this function
1352 comes from for purposes of overload resolution. */
1354 static struct z_candidate *
1355 add_function_candidate (struct z_candidate **candidates,
1356 tree fn, tree ctype, tree arglist,
1357 tree access_path, tree conversion_path,
1358 int flags)
1360 tree parmlist = TYPE_ARG_TYPES (TREE_TYPE (fn));
1361 int i, len;
1362 conversion **convs;
1363 tree parmnode, argnode;
1364 tree orig_arglist;
1365 int viable = 1;
1367 /* At this point we should not see any functions which haven't been
1368 explicitly declared, except for friend functions which will have
1369 been found using argument dependent lookup. */
1370 gcc_assert (!DECL_ANTICIPATED (fn) || DECL_HIDDEN_FRIEND_P (fn));
1372 /* The `this', `in_chrg' and VTT arguments to constructors are not
1373 considered in overload resolution. */
1374 if (DECL_CONSTRUCTOR_P (fn))
1376 parmlist = skip_artificial_parms_for (fn, parmlist);
1377 orig_arglist = arglist;
1378 arglist = skip_artificial_parms_for (fn, arglist);
1380 else
1381 orig_arglist = arglist;
1383 len = list_length (arglist);
1384 convs = alloc_conversions (len);
1386 /* 13.3.2 - Viable functions [over.match.viable]
1387 First, to be a viable function, a candidate function shall have enough
1388 parameters to agree in number with the arguments in the list.
1390 We need to check this first; otherwise, checking the ICSes might cause
1391 us to produce an ill-formed template instantiation. */
1393 parmnode = parmlist;
1394 for (i = 0; i < len; ++i)
1396 if (parmnode == NULL_TREE || parmnode == void_list_node)
1397 break;
1398 parmnode = TREE_CHAIN (parmnode);
1401 if (i < len && parmnode)
1402 viable = 0;
1404 /* Make sure there are default args for the rest of the parms. */
1405 else if (!sufficient_parms_p (parmnode))
1406 viable = 0;
1408 if (! viable)
1409 goto out;
1411 /* Second, for F to be a viable function, there shall exist for each
1412 argument an implicit conversion sequence that converts that argument
1413 to the corresponding parameter of F. */
1415 parmnode = parmlist;
1416 argnode = arglist;
1418 for (i = 0; i < len; ++i)
1420 tree arg = TREE_VALUE (argnode);
1421 tree argtype = lvalue_type (arg);
1422 conversion *t;
1423 int is_this;
1425 if (parmnode == void_list_node)
1426 break;
1428 is_this = (i == 0 && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
1429 && ! DECL_CONSTRUCTOR_P (fn));
1431 if (parmnode)
1433 tree parmtype = TREE_VALUE (parmnode);
1435 /* The type of the implicit object parameter ('this') for
1436 overload resolution is not always the same as for the
1437 function itself; conversion functions are considered to
1438 be members of the class being converted, and functions
1439 introduced by a using-declaration are considered to be
1440 members of the class that uses them.
1442 Since build_over_call ignores the ICS for the `this'
1443 parameter, we can just change the parm type. */
1444 if (ctype && is_this)
1446 parmtype
1447 = build_qualified_type (ctype,
1448 TYPE_QUALS (TREE_TYPE (parmtype)));
1449 parmtype = build_pointer_type (parmtype);
1452 t = implicit_conversion (parmtype, argtype, arg,
1453 /*c_cast_p=*/false, flags);
1455 else
1457 t = build_identity_conv (argtype, arg);
1458 t->ellipsis_p = true;
1461 if (t && is_this)
1462 t->this_p = true;
1464 convs[i] = t;
1465 if (! t)
1467 viable = 0;
1468 break;
1471 if (t->bad_p)
1472 viable = -1;
1474 if (parmnode)
1475 parmnode = TREE_CHAIN (parmnode);
1476 argnode = TREE_CHAIN (argnode);
1479 out:
1480 return add_candidate (candidates, fn, orig_arglist, len, convs,
1481 access_path, conversion_path, viable);
1484 /* Create an overload candidate for the conversion function FN which will
1485 be invoked for expression OBJ, producing a pointer-to-function which
1486 will in turn be called with the argument list ARGLIST, and add it to
1487 CANDIDATES. FLAGS is passed on to implicit_conversion.
1489 Actually, we don't really care about FN; we care about the type it
1490 converts to. There may be multiple conversion functions that will
1491 convert to that type, and we rely on build_user_type_conversion_1 to
1492 choose the best one; so when we create our candidate, we record the type
1493 instead of the function. */
1495 static struct z_candidate *
1496 add_conv_candidate (struct z_candidate **candidates, tree fn, tree obj,
1497 tree arglist, tree access_path, tree conversion_path)
1499 tree totype = TREE_TYPE (TREE_TYPE (fn));
1500 int i, len, viable, flags;
1501 tree parmlist, parmnode, argnode;
1502 conversion **convs;
1504 for (parmlist = totype; TREE_CODE (parmlist) != FUNCTION_TYPE; )
1505 parmlist = TREE_TYPE (parmlist);
1506 parmlist = TYPE_ARG_TYPES (parmlist);
1508 len = list_length (arglist) + 1;
1509 convs = alloc_conversions (len);
1510 parmnode = parmlist;
1511 argnode = arglist;
1512 viable = 1;
1513 flags = LOOKUP_NORMAL;
1515 /* Don't bother looking up the same type twice. */
1516 if (*candidates && (*candidates)->fn == totype)
1517 return NULL;
1519 for (i = 0; i < len; ++i)
1521 tree arg = i == 0 ? obj : TREE_VALUE (argnode);
1522 tree argtype = lvalue_type (arg);
1523 conversion *t;
1525 if (i == 0)
1526 t = implicit_conversion (totype, argtype, arg, /*c_cast_p=*/false,
1527 flags);
1528 else if (parmnode == void_list_node)
1529 break;
1530 else if (parmnode)
1531 t = implicit_conversion (TREE_VALUE (parmnode), argtype, arg,
1532 /*c_cast_p=*/false, flags);
1533 else
1535 t = build_identity_conv (argtype, arg);
1536 t->ellipsis_p = true;
1539 convs[i] = t;
1540 if (! t)
1541 break;
1543 if (t->bad_p)
1544 viable = -1;
1546 if (i == 0)
1547 continue;
1549 if (parmnode)
1550 parmnode = TREE_CHAIN (parmnode);
1551 argnode = TREE_CHAIN (argnode);
1554 if (i < len)
1555 viable = 0;
1557 if (!sufficient_parms_p (parmnode))
1558 viable = 0;
1560 return add_candidate (candidates, totype, arglist, len, convs,
1561 access_path, conversion_path, viable);
1564 static void
1565 build_builtin_candidate (struct z_candidate **candidates, tree fnname,
1566 tree type1, tree type2, tree *args, tree *argtypes,
1567 int flags)
1569 conversion *t;
1570 conversion **convs;
1571 size_t num_convs;
1572 int viable = 1, i;
1573 tree types[2];
1575 types[0] = type1;
1576 types[1] = type2;
1578 num_convs = args[2] ? 3 : (args[1] ? 2 : 1);
1579 convs = alloc_conversions (num_convs);
1581 for (i = 0; i < 2; ++i)
1583 if (! args[i])
1584 break;
1586 t = implicit_conversion (types[i], argtypes[i], args[i],
1587 /*c_cast_p=*/false, flags);
1588 if (! t)
1590 viable = 0;
1591 /* We need something for printing the candidate. */
1592 t = build_identity_conv (types[i], NULL_TREE);
1594 else if (t->bad_p)
1595 viable = 0;
1596 convs[i] = t;
1599 /* For COND_EXPR we rearranged the arguments; undo that now. */
1600 if (args[2])
1602 convs[2] = convs[1];
1603 convs[1] = convs[0];
1604 t = implicit_conversion (boolean_type_node, argtypes[2], args[2],
1605 /*c_cast_p=*/false, flags);
1606 if (t)
1607 convs[0] = t;
1608 else
1609 viable = 0;
1612 add_candidate (candidates, fnname, /*args=*/NULL_TREE,
1613 num_convs, convs,
1614 /*access_path=*/NULL_TREE,
1615 /*conversion_path=*/NULL_TREE,
1616 viable);
1619 static bool
1620 is_complete (tree t)
1622 return COMPLETE_TYPE_P (complete_type (t));
1625 /* Returns nonzero if TYPE is a promoted arithmetic type. */
1627 static bool
1628 promoted_arithmetic_type_p (tree type)
1630 /* [over.built]
1632 In this section, the term promoted integral type is used to refer
1633 to those integral types which are preserved by integral promotion
1634 (including e.g. int and long but excluding e.g. char).
1635 Similarly, the term promoted arithmetic type refers to promoted
1636 integral types plus floating types. */
1637 return ((INTEGRAL_TYPE_P (type)
1638 && same_type_p (type_promotes_to (type), type))
1639 || TREE_CODE (type) == REAL_TYPE);
1642 /* Create any builtin operator overload candidates for the operator in
1643 question given the converted operand types TYPE1 and TYPE2. The other
1644 args are passed through from add_builtin_candidates to
1645 build_builtin_candidate.
1647 TYPE1 and TYPE2 may not be permissible, and we must filter them.
1648 If CODE is requires candidates operands of the same type of the kind
1649 of which TYPE1 and TYPE2 are, we add both candidates
1650 CODE (TYPE1, TYPE1) and CODE (TYPE2, TYPE2). */
1652 static void
1653 add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
1654 enum tree_code code2, tree fnname, tree type1,
1655 tree type2, tree *args, tree *argtypes, int flags)
1657 switch (code)
1659 case POSTINCREMENT_EXPR:
1660 case POSTDECREMENT_EXPR:
1661 args[1] = integer_zero_node;
1662 type2 = integer_type_node;
1663 break;
1664 default:
1665 break;
1668 switch (code)
1671 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
1672 and VQ is either volatile or empty, there exist candidate operator
1673 functions of the form
1674 VQ T& operator++(VQ T&);
1675 T operator++(VQ T&, int);
1676 5 For every pair T, VQ), where T is an enumeration type or an arithmetic
1677 type other than bool, and VQ is either volatile or empty, there exist
1678 candidate operator functions of the form
1679 VQ T& operator--(VQ T&);
1680 T operator--(VQ T&, int);
1681 6 For every pair T, VQ), where T is a cv-qualified or cv-unqualified
1682 complete object type, and VQ is either volatile or empty, there exist
1683 candidate operator functions of the form
1684 T*VQ& operator++(T*VQ&);
1685 T*VQ& operator--(T*VQ&);
1686 T* operator++(T*VQ&, int);
1687 T* operator--(T*VQ&, int); */
1689 case POSTDECREMENT_EXPR:
1690 case PREDECREMENT_EXPR:
1691 if (TREE_CODE (type1) == BOOLEAN_TYPE)
1692 return;
1693 case POSTINCREMENT_EXPR:
1694 case PREINCREMENT_EXPR:
1695 if (ARITHMETIC_TYPE_P (type1) || TYPE_PTROB_P (type1))
1697 type1 = build_reference_type (type1);
1698 break;
1700 return;
1702 /* 7 For every cv-qualified or cv-unqualified complete object type T, there
1703 exist candidate operator functions of the form
1705 T& operator*(T*);
1707 8 For every function type T, there exist candidate operator functions of
1708 the form
1709 T& operator*(T*); */
1711 case INDIRECT_REF:
1712 if (TREE_CODE (type1) == POINTER_TYPE
1713 && (TYPE_PTROB_P (type1)
1714 || TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE))
1715 break;
1716 return;
1718 /* 9 For every type T, there exist candidate operator functions of the form
1719 T* operator+(T*);
1721 10For every promoted arithmetic type T, there exist candidate operator
1722 functions of the form
1723 T operator+(T);
1724 T operator-(T); */
1726 case UNARY_PLUS_EXPR: /* unary + */
1727 if (TREE_CODE (type1) == POINTER_TYPE)
1728 break;
1729 case NEGATE_EXPR:
1730 if (ARITHMETIC_TYPE_P (type1))
1731 break;
1732 return;
1734 /* 11For every promoted integral type T, there exist candidate operator
1735 functions of the form
1736 T operator~(T); */
1738 case BIT_NOT_EXPR:
1739 if (INTEGRAL_TYPE_P (type1))
1740 break;
1741 return;
1743 /* 12For every quintuple C1, C2, T, CV1, CV2), where C2 is a class type, C1
1744 is the same type as C2 or is a derived class of C2, T is a complete
1745 object type or a function type, and CV1 and CV2 are cv-qualifier-seqs,
1746 there exist candidate operator functions of the form
1747 CV12 T& operator->*(CV1 C1*, CV2 T C2::*);
1748 where CV12 is the union of CV1 and CV2. */
1750 case MEMBER_REF:
1751 if (TREE_CODE (type1) == POINTER_TYPE
1752 && TYPE_PTR_TO_MEMBER_P (type2))
1754 tree c1 = TREE_TYPE (type1);
1755 tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
1757 if (MAYBE_CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
1758 && (TYPE_PTRMEMFUNC_P (type2)
1759 || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
1760 break;
1762 return;
1764 /* 13For every pair of promoted arithmetic types L and R, there exist can-
1765 didate operator functions of the form
1766 LR operator*(L, R);
1767 LR operator/(L, R);
1768 LR operator+(L, R);
1769 LR operator-(L, R);
1770 bool operator<(L, R);
1771 bool operator>(L, R);
1772 bool operator<=(L, R);
1773 bool operator>=(L, R);
1774 bool operator==(L, R);
1775 bool operator!=(L, R);
1776 where LR is the result of the usual arithmetic conversions between
1777 types L and R.
1779 14For every pair of types T and I, where T is a cv-qualified or cv-
1780 unqualified complete object type and I is a promoted integral type,
1781 there exist candidate operator functions of the form
1782 T* operator+(T*, I);
1783 T& operator[](T*, I);
1784 T* operator-(T*, I);
1785 T* operator+(I, T*);
1786 T& operator[](I, T*);
1788 15For every T, where T is a pointer to complete object type, there exist
1789 candidate operator functions of the form112)
1790 ptrdiff_t operator-(T, T);
1792 16For every pointer or enumeration type T, there exist candidate operator
1793 functions of the form
1794 bool operator<(T, T);
1795 bool operator>(T, T);
1796 bool operator<=(T, T);
1797 bool operator>=(T, T);
1798 bool operator==(T, T);
1799 bool operator!=(T, T);
1801 17For every pointer to member type T, there exist candidate operator
1802 functions of the form
1803 bool operator==(T, T);
1804 bool operator!=(T, T); */
1806 case MINUS_EXPR:
1807 if (TYPE_PTROB_P (type1) && TYPE_PTROB_P (type2))
1808 break;
1809 if (TYPE_PTROB_P (type1) && INTEGRAL_TYPE_P (type2))
1811 type2 = ptrdiff_type_node;
1812 break;
1814 case MULT_EXPR:
1815 case TRUNC_DIV_EXPR:
1816 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
1817 break;
1818 return;
1820 case EQ_EXPR:
1821 case NE_EXPR:
1822 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
1823 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2)))
1824 break;
1825 if (TYPE_PTR_TO_MEMBER_P (type1) && null_ptr_cst_p (args[1]))
1827 type2 = type1;
1828 break;
1830 if (TYPE_PTR_TO_MEMBER_P (type2) && null_ptr_cst_p (args[0]))
1832 type1 = type2;
1833 break;
1835 /* Fall through. */
1836 case LT_EXPR:
1837 case GT_EXPR:
1838 case LE_EXPR:
1839 case GE_EXPR:
1840 case MAX_EXPR:
1841 case MIN_EXPR:
1842 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
1843 break;
1844 if (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
1845 break;
1846 if (TREE_CODE (type1) == ENUMERAL_TYPE
1847 && TREE_CODE (type2) == ENUMERAL_TYPE)
1848 break;
1849 if (TYPE_PTR_P (type1)
1850 && null_ptr_cst_p (args[1])
1851 && !uses_template_parms (type1))
1853 type2 = type1;
1854 break;
1856 if (null_ptr_cst_p (args[0])
1857 && TYPE_PTR_P (type2)
1858 && !uses_template_parms (type2))
1860 type1 = type2;
1861 break;
1863 return;
1865 case PLUS_EXPR:
1866 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
1867 break;
1868 case ARRAY_REF:
1869 if (INTEGRAL_TYPE_P (type1) && TYPE_PTROB_P (type2))
1871 type1 = ptrdiff_type_node;
1872 break;
1874 if (TYPE_PTROB_P (type1) && INTEGRAL_TYPE_P (type2))
1876 type2 = ptrdiff_type_node;
1877 break;
1879 return;
1881 /* 18For every pair of promoted integral types L and R, there exist candi-
1882 date operator functions of the form
1883 LR operator%(L, R);
1884 LR operator&(L, R);
1885 LR operator^(L, R);
1886 LR operator|(L, R);
1887 L operator<<(L, R);
1888 L operator>>(L, R);
1889 where LR is the result of the usual arithmetic conversions between
1890 types L and R. */
1892 case TRUNC_MOD_EXPR:
1893 case BIT_AND_EXPR:
1894 case BIT_IOR_EXPR:
1895 case BIT_XOR_EXPR:
1896 case LSHIFT_EXPR:
1897 case RSHIFT_EXPR:
1898 if (INTEGRAL_TYPE_P (type1) && INTEGRAL_TYPE_P (type2))
1899 break;
1900 return;
1902 /* 19For every triple L, VQ, R), where L is an arithmetic or enumeration
1903 type, VQ is either volatile or empty, and R is a promoted arithmetic
1904 type, there exist candidate operator functions of the form
1905 VQ L& operator=(VQ L&, R);
1906 VQ L& operator*=(VQ L&, R);
1907 VQ L& operator/=(VQ L&, R);
1908 VQ L& operator+=(VQ L&, R);
1909 VQ L& operator-=(VQ L&, R);
1911 20For every pair T, VQ), where T is any type and VQ is either volatile
1912 or empty, there exist candidate operator functions of the form
1913 T*VQ& operator=(T*VQ&, T*);
1915 21For every pair T, VQ), where T is a pointer to member type and VQ is
1916 either volatile or empty, there exist candidate operator functions of
1917 the form
1918 VQ T& operator=(VQ T&, T);
1920 22For every triple T, VQ, I), where T is a cv-qualified or cv-
1921 unqualified complete object type, VQ is either volatile or empty, and
1922 I is a promoted integral type, there exist candidate operator func-
1923 tions of the form
1924 T*VQ& operator+=(T*VQ&, I);
1925 T*VQ& operator-=(T*VQ&, I);
1927 23For every triple L, VQ, R), where L is an integral or enumeration
1928 type, VQ is either volatile or empty, and R is a promoted integral
1929 type, there exist candidate operator functions of the form
1931 VQ L& operator%=(VQ L&, R);
1932 VQ L& operator<<=(VQ L&, R);
1933 VQ L& operator>>=(VQ L&, R);
1934 VQ L& operator&=(VQ L&, R);
1935 VQ L& operator^=(VQ L&, R);
1936 VQ L& operator|=(VQ L&, R); */
1938 case MODIFY_EXPR:
1939 switch (code2)
1941 case PLUS_EXPR:
1942 case MINUS_EXPR:
1943 if (TYPE_PTROB_P (type1) && INTEGRAL_TYPE_P (type2))
1945 type2 = ptrdiff_type_node;
1946 break;
1948 case MULT_EXPR:
1949 case TRUNC_DIV_EXPR:
1950 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
1951 break;
1952 return;
1954 case TRUNC_MOD_EXPR:
1955 case BIT_AND_EXPR:
1956 case BIT_IOR_EXPR:
1957 case BIT_XOR_EXPR:
1958 case LSHIFT_EXPR:
1959 case RSHIFT_EXPR:
1960 if (INTEGRAL_TYPE_P (type1) && INTEGRAL_TYPE_P (type2))
1961 break;
1962 return;
1964 case NOP_EXPR:
1965 if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
1966 break;
1967 if ((TYPE_PTRMEMFUNC_P (type1) && TYPE_PTRMEMFUNC_P (type2))
1968 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
1969 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
1970 || ((TYPE_PTRMEMFUNC_P (type1)
1971 || TREE_CODE (type1) == POINTER_TYPE)
1972 && null_ptr_cst_p (args[1])))
1974 type2 = type1;
1975 break;
1977 return;
1979 default:
1980 gcc_unreachable ();
1982 type1 = build_reference_type (type1);
1983 break;
1985 case COND_EXPR:
1986 /* [over.built]
1988 For every pair of promoted arithmetic types L and R, there
1989 exist candidate operator functions of the form
1991 LR operator?(bool, L, R);
1993 where LR is the result of the usual arithmetic conversions
1994 between types L and R.
1996 For every type T, where T is a pointer or pointer-to-member
1997 type, there exist candidate operator functions of the form T
1998 operator?(bool, T, T); */
2000 if (promoted_arithmetic_type_p (type1)
2001 && promoted_arithmetic_type_p (type2))
2002 /* That's OK. */
2003 break;
2005 /* Otherwise, the types should be pointers. */
2006 if (!(TYPE_PTR_P (type1) || TYPE_PTR_TO_MEMBER_P (type1))
2007 || !(TYPE_PTR_P (type2) || TYPE_PTR_TO_MEMBER_P (type2)))
2008 return;
2010 /* We don't check that the two types are the same; the logic
2011 below will actually create two candidates; one in which both
2012 parameter types are TYPE1, and one in which both parameter
2013 types are TYPE2. */
2014 break;
2016 default:
2017 gcc_unreachable ();
2020 /* If we're dealing with two pointer types or two enumeral types,
2021 we need candidates for both of them. */
2022 if (type2 && !same_type_p (type1, type2)
2023 && TREE_CODE (type1) == TREE_CODE (type2)
2024 && (TREE_CODE (type1) == REFERENCE_TYPE
2025 || (TYPE_PTR_P (type1) && TYPE_PTR_P (type2))
2026 || (TYPE_PTRMEM_P (type1) && TYPE_PTRMEM_P (type2))
2027 || TYPE_PTRMEMFUNC_P (type1)
2028 || MAYBE_CLASS_TYPE_P (type1)
2029 || TREE_CODE (type1) == ENUMERAL_TYPE))
2031 build_builtin_candidate
2032 (candidates, fnname, type1, type1, args, argtypes, flags);
2033 build_builtin_candidate
2034 (candidates, fnname, type2, type2, args, argtypes, flags);
2035 return;
2038 build_builtin_candidate
2039 (candidates, fnname, type1, type2, args, argtypes, flags);
2042 tree
2043 type_decays_to (tree type)
2045 if (TREE_CODE (type) == ARRAY_TYPE)
2046 return build_pointer_type (TREE_TYPE (type));
2047 if (TREE_CODE (type) == FUNCTION_TYPE)
2048 return build_pointer_type (type);
2049 return type;
2052 /* There are three conditions of builtin candidates:
2054 1) bool-taking candidates. These are the same regardless of the input.
2055 2) pointer-pair taking candidates. These are generated for each type
2056 one of the input types converts to.
2057 3) arithmetic candidates. According to the standard, we should generate
2058 all of these, but I'm trying not to...
2060 Here we generate a superset of the possible candidates for this particular
2061 case. That is a subset of the full set the standard defines, plus some
2062 other cases which the standard disallows. add_builtin_candidate will
2063 filter out the invalid set. */
2065 static void
2066 add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
2067 enum tree_code code2, tree fnname, tree *args,
2068 int flags)
2070 int ref1, i;
2071 int enum_p = 0;
2072 tree type, argtypes[3];
2073 /* TYPES[i] is the set of possible builtin-operator parameter types
2074 we will consider for the Ith argument. These are represented as
2075 a TREE_LIST; the TREE_VALUE of each node is the potential
2076 parameter type. */
2077 tree types[2];
2079 for (i = 0; i < 3; ++i)
2081 if (args[i])
2082 argtypes[i] = unlowered_expr_type (args[i]);
2083 else
2084 argtypes[i] = NULL_TREE;
2087 switch (code)
2089 /* 4 For every pair T, VQ), where T is an arithmetic or enumeration type,
2090 and VQ is either volatile or empty, there exist candidate operator
2091 functions of the form
2092 VQ T& operator++(VQ T&); */
2094 case POSTINCREMENT_EXPR:
2095 case PREINCREMENT_EXPR:
2096 case POSTDECREMENT_EXPR:
2097 case PREDECREMENT_EXPR:
2098 case MODIFY_EXPR:
2099 ref1 = 1;
2100 break;
2102 /* 24There also exist candidate operator functions of the form
2103 bool operator!(bool);
2104 bool operator&&(bool, bool);
2105 bool operator||(bool, bool); */
2107 case TRUTH_NOT_EXPR:
2108 build_builtin_candidate
2109 (candidates, fnname, boolean_type_node,
2110 NULL_TREE, args, argtypes, flags);
2111 return;
2113 case TRUTH_ORIF_EXPR:
2114 case TRUTH_ANDIF_EXPR:
2115 build_builtin_candidate
2116 (candidates, fnname, boolean_type_node,
2117 boolean_type_node, args, argtypes, flags);
2118 return;
2120 case ADDR_EXPR:
2121 case COMPOUND_EXPR:
2122 case COMPONENT_REF:
2123 return;
2125 case COND_EXPR:
2126 case EQ_EXPR:
2127 case NE_EXPR:
2128 case LT_EXPR:
2129 case LE_EXPR:
2130 case GT_EXPR:
2131 case GE_EXPR:
2132 enum_p = 1;
2133 /* Fall through. */
2135 default:
2136 ref1 = 0;
2139 types[0] = types[1] = NULL_TREE;
2141 for (i = 0; i < 2; ++i)
2143 if (! args[i])
2145 else if (MAYBE_CLASS_TYPE_P (argtypes[i]))
2147 tree convs;
2149 if (i == 0 && code == MODIFY_EXPR && code2 == NOP_EXPR)
2150 return;
2152 convs = lookup_conversions (argtypes[i]);
2154 if (code == COND_EXPR)
2156 if (real_lvalue_p (args[i]))
2157 types[i] = tree_cons
2158 (NULL_TREE, build_reference_type (argtypes[i]), types[i]);
2160 types[i] = tree_cons
2161 (NULL_TREE, TYPE_MAIN_VARIANT (argtypes[i]), types[i]);
2164 else if (! convs)
2165 return;
2167 for (; convs; convs = TREE_CHAIN (convs))
2169 type = TREE_TYPE (TREE_TYPE (OVL_CURRENT (TREE_VALUE (convs))));
2171 if (i == 0 && ref1
2172 && (TREE_CODE (type) != REFERENCE_TYPE
2173 || CP_TYPE_CONST_P (TREE_TYPE (type))))
2174 continue;
2176 if (code == COND_EXPR && TREE_CODE (type) == REFERENCE_TYPE)
2177 types[i] = tree_cons (NULL_TREE, type, types[i]);
2179 type = non_reference (type);
2180 if (i != 0 || ! ref1)
2182 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2183 if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
2184 types[i] = tree_cons (NULL_TREE, type, types[i]);
2185 if (INTEGRAL_TYPE_P (type))
2186 type = type_promotes_to (type);
2189 if (! value_member (type, types[i]))
2190 types[i] = tree_cons (NULL_TREE, type, types[i]);
2193 else
2195 if (code == COND_EXPR && real_lvalue_p (args[i]))
2196 types[i] = tree_cons
2197 (NULL_TREE, build_reference_type (argtypes[i]), types[i]);
2198 type = non_reference (argtypes[i]);
2199 if (i != 0 || ! ref1)
2201 type = TYPE_MAIN_VARIANT (type_decays_to (type));
2202 if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
2203 types[i] = tree_cons (NULL_TREE, type, types[i]);
2204 if (INTEGRAL_TYPE_P (type))
2205 type = type_promotes_to (type);
2207 types[i] = tree_cons (NULL_TREE, type, types[i]);
2211 /* Run through the possible parameter types of both arguments,
2212 creating candidates with those parameter types. */
2213 for (; types[0]; types[0] = TREE_CHAIN (types[0]))
2215 if (types[1])
2216 for (type = types[1]; type; type = TREE_CHAIN (type))
2217 add_builtin_candidate
2218 (candidates, code, code2, fnname, TREE_VALUE (types[0]),
2219 TREE_VALUE (type), args, argtypes, flags);
2220 else
2221 add_builtin_candidate
2222 (candidates, code, code2, fnname, TREE_VALUE (types[0]),
2223 NULL_TREE, args, argtypes, flags);
2228 /* If TMPL can be successfully instantiated as indicated by
2229 EXPLICIT_TARGS and ARGLIST, adds the instantiation to CANDIDATES.
2231 TMPL is the template. EXPLICIT_TARGS are any explicit template
2232 arguments. ARGLIST is the arguments provided at the call-site.
2233 The RETURN_TYPE is the desired type for conversion operators. If
2234 OBJ is NULL_TREE, FLAGS and CTYPE are as for add_function_candidate.
2235 If an OBJ is supplied, FLAGS and CTYPE are ignored, and OBJ is as for
2236 add_conv_candidate. */
2238 static struct z_candidate*
2239 add_template_candidate_real (struct z_candidate **candidates, tree tmpl,
2240 tree ctype, tree explicit_targs, tree arglist,
2241 tree return_type, tree access_path,
2242 tree conversion_path, int flags, tree obj,
2243 unification_kind_t strict)
2245 int ntparms = DECL_NTPARMS (tmpl);
2246 tree targs = make_tree_vec (ntparms);
2247 tree args_without_in_chrg = arglist;
2248 struct z_candidate *cand;
2249 int i;
2250 tree fn;
2252 /* We don't do deduction on the in-charge parameter, the VTT
2253 parameter or 'this'. */
2254 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (tmpl))
2255 args_without_in_chrg = TREE_CHAIN (args_without_in_chrg);
2257 if ((DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (tmpl)
2258 || DECL_BASE_CONSTRUCTOR_P (tmpl))
2259 && CLASSTYPE_VBASECLASSES (DECL_CONTEXT (tmpl)))
2260 args_without_in_chrg = TREE_CHAIN (args_without_in_chrg);
2262 i = fn_type_unification (tmpl, explicit_targs, targs,
2263 args_without_in_chrg,
2264 return_type, strict, flags);
2266 if (i != 0)
2267 return NULL;
2269 fn = instantiate_template (tmpl, targs, tf_none);
2270 if (fn == error_mark_node)
2271 return NULL;
2273 /* In [class.copy]:
2275 A member function template is never instantiated to perform the
2276 copy of a class object to an object of its class type.
2278 It's a little unclear what this means; the standard explicitly
2279 does allow a template to be used to copy a class. For example,
2282 struct A {
2283 A(A&);
2284 template <class T> A(const T&);
2286 const A f ();
2287 void g () { A a (f ()); }
2289 the member template will be used to make the copy. The section
2290 quoted above appears in the paragraph that forbids constructors
2291 whose only parameter is (a possibly cv-qualified variant of) the
2292 class type, and a logical interpretation is that the intent was
2293 to forbid the instantiation of member templates which would then
2294 have that form. */
2295 if (DECL_CONSTRUCTOR_P (fn) && list_length (arglist) == 2)
2297 tree arg_types = FUNCTION_FIRST_USER_PARMTYPE (fn);
2298 if (arg_types && same_type_p (TYPE_MAIN_VARIANT (TREE_VALUE (arg_types)),
2299 ctype))
2300 return NULL;
2303 if (obj != NULL_TREE)
2304 /* Aha, this is a conversion function. */
2305 cand = add_conv_candidate (candidates, fn, obj, access_path,
2306 conversion_path, arglist);
2307 else
2308 cand = add_function_candidate (candidates, fn, ctype,
2309 arglist, access_path,
2310 conversion_path, flags);
2311 if (DECL_TI_TEMPLATE (fn) != tmpl)
2312 /* This situation can occur if a member template of a template
2313 class is specialized. Then, instantiate_template might return
2314 an instantiation of the specialization, in which case the
2315 DECL_TI_TEMPLATE field will point at the original
2316 specialization. For example:
2318 template <class T> struct S { template <class U> void f(U);
2319 template <> void f(int) {}; };
2320 S<double> sd;
2321 sd.f(3);
2323 Here, TMPL will be template <class U> S<double>::f(U).
2324 And, instantiate template will give us the specialization
2325 template <> S<double>::f(int). But, the DECL_TI_TEMPLATE field
2326 for this will point at template <class T> template <> S<T>::f(int),
2327 so that we can find the definition. For the purposes of
2328 overload resolution, however, we want the original TMPL. */
2329 cand->template_decl = tree_cons (tmpl, targs, NULL_TREE);
2330 else
2331 cand->template_decl = DECL_TEMPLATE_INFO (fn);
2333 return cand;
2337 static struct z_candidate *
2338 add_template_candidate (struct z_candidate **candidates, tree tmpl, tree ctype,
2339 tree explicit_targs, tree arglist, tree return_type,
2340 tree access_path, tree conversion_path, int flags,
2341 unification_kind_t strict)
2343 return
2344 add_template_candidate_real (candidates, tmpl, ctype,
2345 explicit_targs, arglist, return_type,
2346 access_path, conversion_path,
2347 flags, NULL_TREE, strict);
2351 static struct z_candidate *
2352 add_template_conv_candidate (struct z_candidate **candidates, tree tmpl,
2353 tree obj, tree arglist, tree return_type,
2354 tree access_path, tree conversion_path)
2356 return
2357 add_template_candidate_real (candidates, tmpl, NULL_TREE, NULL_TREE,
2358 arglist, return_type, access_path,
2359 conversion_path, 0, obj, DEDUCE_CONV);
2362 /* The CANDS are the set of candidates that were considered for
2363 overload resolution. Return the set of viable candidates. If none
2364 of the candidates were viable, set *ANY_VIABLE_P to true. STRICT_P
2365 is true if a candidate should be considered viable only if it is
2366 strictly viable. */
2368 static struct z_candidate*
2369 splice_viable (struct z_candidate *cands,
2370 bool strict_p,
2371 bool *any_viable_p)
2373 struct z_candidate *viable;
2374 struct z_candidate **last_viable;
2375 struct z_candidate **cand;
2377 viable = NULL;
2378 last_viable = &viable;
2379 *any_viable_p = false;
2381 cand = &cands;
2382 while (*cand)
2384 struct z_candidate *c = *cand;
2385 if (strict_p ? c->viable == 1 : c->viable)
2387 *last_viable = c;
2388 *cand = c->next;
2389 c->next = NULL;
2390 last_viable = &c->next;
2391 *any_viable_p = true;
2393 else
2394 cand = &c->next;
2397 return viable ? viable : cands;
2400 static bool
2401 any_strictly_viable (struct z_candidate *cands)
2403 for (; cands; cands = cands->next)
2404 if (cands->viable == 1)
2405 return true;
2406 return false;
2409 /* OBJ is being used in an expression like "OBJ.f (...)". In other
2410 words, it is about to become the "this" pointer for a member
2411 function call. Take the address of the object. */
2413 static tree
2414 build_this (tree obj)
2416 /* In a template, we are only concerned about the type of the
2417 expression, so we can take a shortcut. */
2418 if (processing_template_decl)
2419 return build_address (obj);
2421 return cp_build_unary_op (ADDR_EXPR, obj, 0, tf_warning_or_error);
2424 /* Returns true iff functions are equivalent. Equivalent functions are
2425 not '==' only if one is a function-local extern function or if
2426 both are extern "C". */
2428 static inline int
2429 equal_functions (tree fn1, tree fn2)
2431 if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2)
2432 || DECL_EXTERN_C_FUNCTION_P (fn1))
2433 return decls_match (fn1, fn2);
2434 return fn1 == fn2;
2437 /* Print information about one overload candidate CANDIDATE. MSGSTR
2438 is the text to print before the candidate itself.
2440 NOTE: Unlike most diagnostic functions in GCC, MSGSTR is expected
2441 to have been run through gettext by the caller. This wart makes
2442 life simpler in print_z_candidates and for the translators. */
2444 static void
2445 print_z_candidate (const char *msgstr, struct z_candidate *candidate)
2447 if (TREE_CODE (candidate->fn) == IDENTIFIER_NODE)
2449 if (candidate->num_convs == 3)
2450 inform ("%s %D(%T, %T, %T) <built-in>", msgstr, candidate->fn,
2451 candidate->convs[0]->type,
2452 candidate->convs[1]->type,
2453 candidate->convs[2]->type);
2454 else if (candidate->num_convs == 2)
2455 inform ("%s %D(%T, %T) <built-in>", msgstr, candidate->fn,
2456 candidate->convs[0]->type,
2457 candidate->convs[1]->type);
2458 else
2459 inform ("%s %D(%T) <built-in>", msgstr, candidate->fn,
2460 candidate->convs[0]->type);
2462 else if (TYPE_P (candidate->fn))
2463 inform ("%s %T <conversion>", msgstr, candidate->fn);
2464 else if (candidate->viable == -1)
2465 inform ("%s %+#D <near match>", msgstr, candidate->fn);
2466 else
2467 inform ("%s %+#D", msgstr, candidate->fn);
2470 static void
2471 print_z_candidates (struct z_candidate *candidates)
2473 const char *str;
2474 struct z_candidate *cand1;
2475 struct z_candidate **cand2;
2477 /* There may be duplicates in the set of candidates. We put off
2478 checking this condition as long as possible, since we have no way
2479 to eliminate duplicates from a set of functions in less than n^2
2480 time. Now we are about to emit an error message, so it is more
2481 permissible to go slowly. */
2482 for (cand1 = candidates; cand1; cand1 = cand1->next)
2484 tree fn = cand1->fn;
2485 /* Skip builtin candidates and conversion functions. */
2486 if (TREE_CODE (fn) != FUNCTION_DECL)
2487 continue;
2488 cand2 = &cand1->next;
2489 while (*cand2)
2491 if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
2492 && equal_functions (fn, (*cand2)->fn))
2493 *cand2 = (*cand2)->next;
2494 else
2495 cand2 = &(*cand2)->next;
2499 if (!candidates)
2500 return;
2502 str = _("candidates are:");
2503 print_z_candidate (str, candidates);
2504 if (candidates->next)
2506 /* Indent successive candidates by the width of the translation
2507 of the above string. */
2508 size_t len = gcc_gettext_width (str) + 1;
2509 char *spaces = (char *) alloca (len);
2510 memset (spaces, ' ', len-1);
2511 spaces[len - 1] = '\0';
2513 candidates = candidates->next;
2516 print_z_candidate (spaces, candidates);
2517 candidates = candidates->next;
2519 while (candidates);
2523 /* USER_SEQ is a user-defined conversion sequence, beginning with a
2524 USER_CONV. STD_SEQ is the standard conversion sequence applied to
2525 the result of the conversion function to convert it to the final
2526 desired type. Merge the two sequences into a single sequence,
2527 and return the merged sequence. */
2529 static conversion *
2530 merge_conversion_sequences (conversion *user_seq, conversion *std_seq)
2532 conversion **t;
2534 gcc_assert (user_seq->kind == ck_user);
2536 /* Find the end of the second conversion sequence. */
2537 t = &(std_seq);
2538 while ((*t)->kind != ck_identity)
2539 t = &((*t)->u.next);
2541 /* Replace the identity conversion with the user conversion
2542 sequence. */
2543 *t = user_seq;
2545 /* The entire sequence is a user-conversion sequence. */
2546 std_seq->user_conv_p = true;
2548 return std_seq;
2551 /* Returns the best overload candidate to perform the requested
2552 conversion. This function is used for three the overloading situations
2553 described in [over.match.copy], [over.match.conv], and [over.match.ref].
2554 If TOTYPE is a REFERENCE_TYPE, we're trying to find an lvalue binding as
2555 per [dcl.init.ref], so we ignore temporary bindings. */
2557 static struct z_candidate *
2558 build_user_type_conversion_1 (tree totype, tree expr, int flags)
2560 struct z_candidate *candidates, *cand;
2561 tree fromtype = TREE_TYPE (expr);
2562 tree ctors = NULL_TREE;
2563 tree conv_fns = NULL_TREE;
2564 conversion *conv = NULL;
2565 tree args = NULL_TREE;
2566 bool any_viable_p;
2567 int convflags;
2569 /* We represent conversion within a hierarchy using RVALUE_CONV and
2570 BASE_CONV, as specified by [over.best.ics]; these become plain
2571 constructor calls, as specified in [dcl.init]. */
2572 gcc_assert (!MAYBE_CLASS_TYPE_P (fromtype) || !MAYBE_CLASS_TYPE_P (totype)
2573 || !DERIVED_FROM_P (totype, fromtype));
2575 if (MAYBE_CLASS_TYPE_P (totype))
2576 ctors = lookup_fnfields (totype, complete_ctor_identifier, 0);
2578 if (MAYBE_CLASS_TYPE_P (fromtype))
2580 tree to_nonref = non_reference (totype);
2581 if (same_type_ignoring_top_level_qualifiers_p (to_nonref, fromtype) ||
2582 (CLASS_TYPE_P (to_nonref) && CLASS_TYPE_P (fromtype)
2583 && DERIVED_FROM_P (to_nonref, fromtype)))
2585 /* [class.conv.fct] A conversion function is never used to
2586 convert a (possibly cv-qualified) object to the (possibly
2587 cv-qualified) same object type (or a reference to it), to a
2588 (possibly cv-qualified) base class of that type (or a
2589 reference to it)... */
2591 else
2592 conv_fns = lookup_conversions (fromtype);
2595 candidates = 0;
2596 flags |= LOOKUP_NO_CONVERSION;
2598 /* It's OK to bind a temporary for converting constructor arguments, but
2599 not in converting the return value of a conversion operator. */
2600 convflags = ((flags & LOOKUP_NO_TEMP_BIND) | LOOKUP_NO_CONVERSION);
2601 flags &= ~LOOKUP_NO_TEMP_BIND;
2603 if (ctors)
2605 tree t;
2607 ctors = BASELINK_FUNCTIONS (ctors);
2609 t = build_int_cst (build_pointer_type (totype), 0);
2610 args = build_tree_list (NULL_TREE, expr);
2611 /* We should never try to call the abstract or base constructor
2612 from here. */
2613 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (OVL_CURRENT (ctors))
2614 && !DECL_HAS_VTT_PARM_P (OVL_CURRENT (ctors)));
2615 args = tree_cons (NULL_TREE, t, args);
2617 for (; ctors; ctors = OVL_NEXT (ctors))
2619 tree ctor = OVL_CURRENT (ctors);
2620 if (DECL_NONCONVERTING_P (ctor))
2621 continue;
2623 if (TREE_CODE (ctor) == TEMPLATE_DECL)
2624 cand = add_template_candidate (&candidates, ctor, totype,
2625 NULL_TREE, args, NULL_TREE,
2626 TYPE_BINFO (totype),
2627 TYPE_BINFO (totype),
2628 flags,
2629 DEDUCE_CALL);
2630 else
2631 cand = add_function_candidate (&candidates, ctor, totype,
2632 args, TYPE_BINFO (totype),
2633 TYPE_BINFO (totype),
2634 flags);
2636 if (cand)
2638 cand->second_conv = build_identity_conv (totype, NULL_TREE);
2640 /* If totype isn't a reference, and LOOKUP_NO_TEMP_BIND isn't
2641 set, then this is copy-initialization. In that case, "The
2642 result of the call is then used to direct-initialize the
2643 object that is the destination of the copy-initialization."
2644 [dcl.init]
2646 We represent this in the conversion sequence with an
2647 rvalue conversion, which means a constructor call. */
2648 if (TREE_CODE (totype) != REFERENCE_TYPE
2649 && !(convflags & LOOKUP_NO_TEMP_BIND))
2650 cand->second_conv
2651 = build_conv (ck_rvalue, totype, cand->second_conv);
2655 if (conv_fns)
2656 args = build_tree_list (NULL_TREE, build_this (expr));
2658 for (; conv_fns; conv_fns = TREE_CHAIN (conv_fns))
2660 tree fns;
2661 tree conversion_path = TREE_PURPOSE (conv_fns);
2663 /* If we are called to convert to a reference type, we are trying to
2664 find an lvalue binding, so don't even consider temporaries. If
2665 we don't find an lvalue binding, the caller will try again to
2666 look for a temporary binding. */
2667 if (TREE_CODE (totype) == REFERENCE_TYPE)
2668 convflags |= LOOKUP_NO_TEMP_BIND;
2670 for (fns = TREE_VALUE (conv_fns); fns; fns = OVL_NEXT (fns))
2672 tree fn = OVL_CURRENT (fns);
2674 /* [over.match.funcs] For conversion functions, the function
2675 is considered to be a member of the class of the implicit
2676 object argument for the purpose of defining the type of
2677 the implicit object parameter.
2679 So we pass fromtype as CTYPE to add_*_candidate. */
2681 if (TREE_CODE (fn) == TEMPLATE_DECL)
2682 cand = add_template_candidate (&candidates, fn, fromtype,
2683 NULL_TREE,
2684 args, totype,
2685 TYPE_BINFO (fromtype),
2686 conversion_path,
2687 flags,
2688 DEDUCE_CONV);
2689 else
2690 cand = add_function_candidate (&candidates, fn, fromtype,
2691 args,
2692 TYPE_BINFO (fromtype),
2693 conversion_path,
2694 flags);
2696 if (cand)
2698 conversion *ics
2699 = implicit_conversion (totype,
2700 TREE_TYPE (TREE_TYPE (cand->fn)),
2702 /*c_cast_p=*/false, convflags);
2704 /* If LOOKUP_NO_TEMP_BIND isn't set, then this is
2705 copy-initialization. In that case, "The result of the
2706 call is then used to direct-initialize the object that is
2707 the destination of the copy-initialization." [dcl.init]
2709 We represent this in the conversion sequence with an
2710 rvalue conversion, which means a constructor call. But
2711 don't add a second rvalue conversion if there's already
2712 one there. Which there really shouldn't be, but it's
2713 harmless since we'd add it here anyway. */
2714 if (ics && MAYBE_CLASS_TYPE_P (totype) && ics->kind != ck_rvalue
2715 && !(convflags & LOOKUP_NO_TEMP_BIND))
2716 ics = build_conv (ck_rvalue, totype, ics);
2718 cand->second_conv = ics;
2720 if (!ics)
2721 cand->viable = 0;
2722 else if (candidates->viable == 1 && ics->bad_p)
2723 cand->viable = -1;
2728 candidates = splice_viable (candidates, pedantic, &any_viable_p);
2729 if (!any_viable_p)
2730 return NULL;
2732 cand = tourney (candidates);
2733 if (cand == 0)
2735 if (flags & LOOKUP_COMPLAIN)
2737 error ("conversion from %qT to %qT is ambiguous",
2738 fromtype, totype);
2739 print_z_candidates (candidates);
2742 cand = candidates; /* any one will do */
2743 cand->second_conv = build_ambiguous_conv (totype, expr);
2744 cand->second_conv->user_conv_p = true;
2745 if (!any_strictly_viable (candidates))
2746 cand->second_conv->bad_p = true;
2747 /* If there are viable candidates, don't set ICS_BAD_FLAG; an
2748 ambiguous conversion is no worse than another user-defined
2749 conversion. */
2751 return cand;
2754 /* Build the user conversion sequence. */
2755 conv = build_conv
2756 (ck_user,
2757 (DECL_CONSTRUCTOR_P (cand->fn)
2758 ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
2759 build_identity_conv (TREE_TYPE (expr), expr));
2760 conv->cand = cand;
2762 /* Combine it with the second conversion sequence. */
2763 cand->second_conv = merge_conversion_sequences (conv,
2764 cand->second_conv);
2766 if (cand->viable == -1)
2767 cand->second_conv->bad_p = true;
2769 return cand;
2772 tree
2773 build_user_type_conversion (tree totype, tree expr, int flags)
2775 struct z_candidate *cand
2776 = build_user_type_conversion_1 (totype, expr, flags);
2778 if (cand)
2780 if (cand->second_conv->kind == ck_ambig)
2781 return error_mark_node;
2782 expr = convert_like (cand->second_conv, expr, tf_warning_or_error);
2783 return convert_from_reference (expr);
2785 return NULL_TREE;
2788 /* Do any initial processing on the arguments to a function call. */
2790 static tree
2791 resolve_args (tree args)
2793 tree t;
2794 for (t = args; t; t = TREE_CHAIN (t))
2796 tree arg = TREE_VALUE (t);
2798 if (error_operand_p (arg))
2799 return error_mark_node;
2800 else if (VOID_TYPE_P (TREE_TYPE (arg)))
2802 error ("invalid use of void expression");
2803 return error_mark_node;
2805 else if (invalid_nonstatic_memfn_p (arg, tf_warning_or_error))
2806 return error_mark_node;
2808 return args;
2811 /* Perform overload resolution on FN, which is called with the ARGS.
2813 Return the candidate function selected by overload resolution, or
2814 NULL if the event that overload resolution failed. In the case
2815 that overload resolution fails, *CANDIDATES will be the set of
2816 candidates considered, and ANY_VIABLE_P will be set to true or
2817 false to indicate whether or not any of the candidates were
2818 viable.
2820 The ARGS should already have gone through RESOLVE_ARGS before this
2821 function is called. */
2823 static struct z_candidate *
2824 perform_overload_resolution (tree fn,
2825 tree args,
2826 struct z_candidate **candidates,
2827 bool *any_viable_p)
2829 struct z_candidate *cand;
2830 tree explicit_targs = NULL_TREE;
2831 int template_only = 0;
2833 *candidates = NULL;
2834 *any_viable_p = true;
2836 /* Check FN and ARGS. */
2837 gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
2838 || TREE_CODE (fn) == TEMPLATE_DECL
2839 || TREE_CODE (fn) == OVERLOAD
2840 || TREE_CODE (fn) == TEMPLATE_ID_EXPR);
2841 gcc_assert (!args || TREE_CODE (args) == TREE_LIST);
2843 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
2845 explicit_targs = TREE_OPERAND (fn, 1);
2846 fn = TREE_OPERAND (fn, 0);
2847 template_only = 1;
2850 /* Add the various candidate functions. */
2851 add_candidates (fn, args, explicit_targs, template_only,
2852 /*conversion_path=*/NULL_TREE,
2853 /*access_path=*/NULL_TREE,
2854 LOOKUP_NORMAL,
2855 candidates);
2857 *candidates = splice_viable (*candidates, pedantic, any_viable_p);
2858 if (!*any_viable_p)
2859 return NULL;
2861 cand = tourney (*candidates);
2862 return cand;
2865 /* Return an expression for a call to FN (a namespace-scope function,
2866 or a static member function) with the ARGS. */
2868 tree
2869 build_new_function_call (tree fn, tree args, bool koenig_p,
2870 tsubst_flags_t complain)
2872 struct z_candidate *candidates, *cand;
2873 bool any_viable_p;
2874 void *p;
2875 tree result;
2877 args = resolve_args (args);
2878 if (args == error_mark_node)
2879 return error_mark_node;
2881 /* If this function was found without using argument dependent
2882 lookup, then we want to ignore any undeclared friend
2883 functions. */
2884 if (!koenig_p)
2886 tree orig_fn = fn;
2888 fn = remove_hidden_names (fn);
2889 if (!fn)
2891 if (complain & tf_error)
2892 error ("no matching function for call to %<%D(%A)%>",
2893 DECL_NAME (OVL_CURRENT (orig_fn)), args);
2894 return error_mark_node;
2898 /* Get the high-water mark for the CONVERSION_OBSTACK. */
2899 p = conversion_obstack_alloc (0);
2901 cand = perform_overload_resolution (fn, args, &candidates, &any_viable_p);
2903 if (!cand)
2905 if (complain & tf_error)
2907 if (!any_viable_p && candidates && ! candidates->next)
2908 return cp_build_function_call (candidates->fn, args, complain);
2909 if (TREE_CODE (fn) == TEMPLATE_ID_EXPR)
2910 fn = TREE_OPERAND (fn, 0);
2911 if (!any_viable_p)
2912 error ("no matching function for call to %<%D(%A)%>",
2913 DECL_NAME (OVL_CURRENT (fn)), args);
2914 else
2915 error ("call of overloaded %<%D(%A)%> is ambiguous",
2916 DECL_NAME (OVL_CURRENT (fn)), args);
2917 if (candidates)
2918 print_z_candidates (candidates);
2920 result = error_mark_node;
2922 else
2923 result = build_over_call (cand, LOOKUP_NORMAL, complain);
2925 /* Free all the conversions we allocated. */
2926 obstack_free (&conversion_obstack, p);
2928 return result;
2931 /* Build a call to a global operator new. FNNAME is the name of the
2932 operator (either "operator new" or "operator new[]") and ARGS are
2933 the arguments provided. *SIZE points to the total number of bytes
2934 required by the allocation, and is updated if that is changed here.
2935 *COOKIE_SIZE is non-NULL if a cookie should be used. If this
2936 function determines that no cookie should be used, after all,
2937 *COOKIE_SIZE is set to NULL_TREE. If FN is non-NULL, it will be
2938 set, upon return, to the allocation function called. */
2940 tree
2941 build_operator_new_call (tree fnname, tree args,
2942 tree *size, tree *cookie_size,
2943 tree *fn)
2945 tree fns;
2946 struct z_candidate *candidates;
2947 struct z_candidate *cand;
2948 bool any_viable_p;
2950 if (fn)
2951 *fn = NULL_TREE;
2952 args = tree_cons (NULL_TREE, *size, args);
2953 args = resolve_args (args);
2954 if (args == error_mark_node)
2955 return args;
2957 /* Based on:
2959 [expr.new]
2961 If this lookup fails to find the name, or if the allocated type
2962 is not a class type, the allocation function's name is looked
2963 up in the global scope.
2965 we disregard block-scope declarations of "operator new". */
2966 fns = lookup_function_nonclass (fnname, args, /*block_p=*/false);
2968 /* Figure out what function is being called. */
2969 cand = perform_overload_resolution (fns, args, &candidates, &any_viable_p);
2971 /* If no suitable function could be found, issue an error message
2972 and give up. */
2973 if (!cand)
2975 if (!any_viable_p)
2976 error ("no matching function for call to %<%D(%A)%>",
2977 DECL_NAME (OVL_CURRENT (fns)), args);
2978 else
2979 error ("call of overloaded %<%D(%A)%> is ambiguous",
2980 DECL_NAME (OVL_CURRENT (fns)), args);
2981 if (candidates)
2982 print_z_candidates (candidates);
2983 return error_mark_node;
2986 /* If a cookie is required, add some extra space. Whether
2987 or not a cookie is required cannot be determined until
2988 after we know which function was called. */
2989 if (*cookie_size)
2991 bool use_cookie = true;
2992 if (!abi_version_at_least (2))
2994 tree placement = TREE_CHAIN (args);
2995 /* In G++ 3.2, the check was implemented incorrectly; it
2996 looked at the placement expression, rather than the
2997 type of the function. */
2998 if (placement && !TREE_CHAIN (placement)
2999 && same_type_p (TREE_TYPE (TREE_VALUE (placement)),
3000 ptr_type_node))
3001 use_cookie = false;
3003 else
3005 tree arg_types;
3007 arg_types = TYPE_ARG_TYPES (TREE_TYPE (cand->fn));
3008 /* Skip the size_t parameter. */
3009 arg_types = TREE_CHAIN (arg_types);
3010 /* Check the remaining parameters (if any). */
3011 if (arg_types
3012 && TREE_CHAIN (arg_types) == void_list_node
3013 && same_type_p (TREE_VALUE (arg_types),
3014 ptr_type_node))
3015 use_cookie = false;
3017 /* If we need a cookie, adjust the number of bytes allocated. */
3018 if (use_cookie)
3020 /* Update the total size. */
3021 *size = size_binop (PLUS_EXPR, *size, *cookie_size);
3022 /* Update the argument list to reflect the adjusted size. */
3023 TREE_VALUE (args) = *size;
3025 else
3026 *cookie_size = NULL_TREE;
3029 /* Tell our caller which function we decided to call. */
3030 if (fn)
3031 *fn = cand->fn;
3033 /* Build the CALL_EXPR. */
3034 return build_over_call (cand, LOOKUP_NORMAL, tf_warning_or_error);
3037 static tree
3038 build_object_call (tree obj, tree args, tsubst_flags_t complain)
3040 struct z_candidate *candidates = 0, *cand;
3041 tree fns, convs, mem_args = NULL_TREE;
3042 tree type = TREE_TYPE (obj);
3043 bool any_viable_p;
3044 tree result = NULL_TREE;
3045 void *p;
3047 if (TYPE_PTRMEMFUNC_P (type))
3049 if (complain & tf_error)
3050 /* It's no good looking for an overloaded operator() on a
3051 pointer-to-member-function. */
3052 error ("pointer-to-member function %E cannot be called without an object; consider using .* or ->*", obj);
3053 return error_mark_node;
3056 if (TYPE_BINFO (type))
3058 fns = lookup_fnfields (TYPE_BINFO (type), ansi_opname (CALL_EXPR), 1);
3059 if (fns == error_mark_node)
3060 return error_mark_node;
3062 else
3063 fns = NULL_TREE;
3065 args = resolve_args (args);
3067 if (args == error_mark_node)
3068 return error_mark_node;
3070 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3071 p = conversion_obstack_alloc (0);
3073 if (fns)
3075 tree base = BINFO_TYPE (BASELINK_BINFO (fns));
3076 mem_args = tree_cons (NULL_TREE, build_this (obj), args);
3078 for (fns = BASELINK_FUNCTIONS (fns); fns; fns = OVL_NEXT (fns))
3080 tree fn = OVL_CURRENT (fns);
3081 if (TREE_CODE (fn) == TEMPLATE_DECL)
3082 add_template_candidate (&candidates, fn, base, NULL_TREE,
3083 mem_args, NULL_TREE,
3084 TYPE_BINFO (type),
3085 TYPE_BINFO (type),
3086 LOOKUP_NORMAL, DEDUCE_CALL);
3087 else
3088 add_function_candidate
3089 (&candidates, fn, base, mem_args, TYPE_BINFO (type),
3090 TYPE_BINFO (type), LOOKUP_NORMAL);
3094 convs = lookup_conversions (type);
3096 for (; convs; convs = TREE_CHAIN (convs))
3098 tree fns = TREE_VALUE (convs);
3099 tree totype = TREE_TYPE (TREE_TYPE (OVL_CURRENT (fns)));
3101 if ((TREE_CODE (totype) == POINTER_TYPE
3102 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
3103 || (TREE_CODE (totype) == REFERENCE_TYPE
3104 && TREE_CODE (TREE_TYPE (totype)) == FUNCTION_TYPE)
3105 || (TREE_CODE (totype) == REFERENCE_TYPE
3106 && TREE_CODE (TREE_TYPE (totype)) == POINTER_TYPE
3107 && TREE_CODE (TREE_TYPE (TREE_TYPE (totype))) == FUNCTION_TYPE))
3108 for (; fns; fns = OVL_NEXT (fns))
3110 tree fn = OVL_CURRENT (fns);
3111 if (TREE_CODE (fn) == TEMPLATE_DECL)
3112 add_template_conv_candidate
3113 (&candidates, fn, obj, args, totype,
3114 /*access_path=*/NULL_TREE,
3115 /*conversion_path=*/NULL_TREE);
3116 else
3117 add_conv_candidate (&candidates, fn, obj, args,
3118 /*conversion_path=*/NULL_TREE,
3119 /*access_path=*/NULL_TREE);
3123 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3124 if (!any_viable_p)
3126 if (complain & tf_error)
3128 error ("no match for call to %<(%T) (%A)%>", TREE_TYPE (obj), args);
3129 print_z_candidates (candidates);
3131 result = error_mark_node;
3133 else
3135 cand = tourney (candidates);
3136 if (cand == 0)
3138 if (complain & tf_error)
3140 error ("call of %<(%T) (%A)%> is ambiguous",
3141 TREE_TYPE (obj), args);
3142 print_z_candidates (candidates);
3144 result = error_mark_node;
3146 /* Since cand->fn will be a type, not a function, for a conversion
3147 function, we must be careful not to unconditionally look at
3148 DECL_NAME here. */
3149 else if (TREE_CODE (cand->fn) == FUNCTION_DECL
3150 && DECL_OVERLOADED_OPERATOR_P (cand->fn) == CALL_EXPR)
3151 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3152 else
3154 obj = convert_like_with_context (cand->convs[0], obj, cand->fn, -1,
3155 complain);
3156 obj = convert_from_reference (obj);
3157 result = cp_build_function_call (obj, args, complain);
3161 /* Free all the conversions we allocated. */
3162 obstack_free (&conversion_obstack, p);
3164 return result;
3167 static void
3168 op_error (enum tree_code code, enum tree_code code2,
3169 tree arg1, tree arg2, tree arg3, const char *problem)
3171 const char *opname;
3173 if (code == MODIFY_EXPR)
3174 opname = assignment_operator_name_info[code2].name;
3175 else
3176 opname = operator_name_info[code].name;
3178 switch (code)
3180 case COND_EXPR:
3181 error ("%s for ternary %<operator?:%> in %<%E ? %E : %E%>",
3182 problem, arg1, arg2, arg3);
3183 break;
3185 case POSTINCREMENT_EXPR:
3186 case POSTDECREMENT_EXPR:
3187 error ("%s for %<operator%s%> in %<%E%s%>", problem, opname, arg1, opname);
3188 break;
3190 case ARRAY_REF:
3191 error ("%s for %<operator[]%> in %<%E[%E]%>", problem, arg1, arg2);
3192 break;
3194 case REALPART_EXPR:
3195 case IMAGPART_EXPR:
3196 error ("%s for %qs in %<%s %E%>", problem, opname, opname, arg1);
3197 break;
3199 default:
3200 if (arg2)
3201 error ("%s for %<operator%s%> in %<%E %s %E%>",
3202 problem, opname, arg1, opname, arg2);
3203 else
3204 error ("%s for %<operator%s%> in %<%s%E%>",
3205 problem, opname, opname, arg1);
3206 break;
3210 /* Return the implicit conversion sequence that could be used to
3211 convert E1 to E2 in [expr.cond]. */
3213 static conversion *
3214 conditional_conversion (tree e1, tree e2)
3216 tree t1 = non_reference (TREE_TYPE (e1));
3217 tree t2 = non_reference (TREE_TYPE (e2));
3218 conversion *conv;
3219 bool good_base;
3221 /* [expr.cond]
3223 If E2 is an lvalue: E1 can be converted to match E2 if E1 can be
3224 implicitly converted (clause _conv_) to the type "reference to
3225 T2", subject to the constraint that in the conversion the
3226 reference must bind directly (_dcl.init.ref_) to E1. */
3227 if (real_lvalue_p (e2))
3229 conv = implicit_conversion (build_reference_type (t2),
3232 /*c_cast_p=*/false,
3233 LOOKUP_NO_TEMP_BIND);
3234 if (conv)
3235 return conv;
3238 /* [expr.cond]
3240 If E1 and E2 have class type, and the underlying class types are
3241 the same or one is a base class of the other: E1 can be converted
3242 to match E2 if the class of T2 is the same type as, or a base
3243 class of, the class of T1, and the cv-qualification of T2 is the
3244 same cv-qualification as, or a greater cv-qualification than, the
3245 cv-qualification of T1. If the conversion is applied, E1 is
3246 changed to an rvalue of type T2 that still refers to the original
3247 source class object (or the appropriate subobject thereof). */
3248 if (CLASS_TYPE_P (t1) && CLASS_TYPE_P (t2)
3249 && ((good_base = DERIVED_FROM_P (t2, t1)) || DERIVED_FROM_P (t1, t2)))
3251 if (good_base && at_least_as_qualified_p (t2, t1))
3253 conv = build_identity_conv (t1, e1);
3254 if (!same_type_p (TYPE_MAIN_VARIANT (t1),
3255 TYPE_MAIN_VARIANT (t2)))
3256 conv = build_conv (ck_base, t2, conv);
3257 else
3258 conv = build_conv (ck_rvalue, t2, conv);
3259 return conv;
3261 else
3262 return NULL;
3264 else
3265 /* [expr.cond]
3267 Otherwise: E1 can be converted to match E2 if E1 can be implicitly
3268 converted to the type that expression E2 would have if E2 were
3269 converted to an rvalue (or the type it has, if E2 is an rvalue). */
3270 return implicit_conversion (t2, t1, e1, /*c_cast_p=*/false,
3271 LOOKUP_NORMAL);
3274 /* Implement [expr.cond]. ARG1, ARG2, and ARG3 are the three
3275 arguments to the conditional expression. */
3277 tree
3278 build_conditional_expr (tree arg1, tree arg2, tree arg3,
3279 tsubst_flags_t complain)
3281 tree arg2_type;
3282 tree arg3_type;
3283 tree result = NULL_TREE;
3284 tree result_type = NULL_TREE;
3285 bool lvalue_p = true;
3286 struct z_candidate *candidates = 0;
3287 struct z_candidate *cand;
3288 void *p;
3290 /* As a G++ extension, the second argument to the conditional can be
3291 omitted. (So that `a ? : c' is roughly equivalent to `a ? a :
3292 c'.) If the second operand is omitted, make sure it is
3293 calculated only once. */
3294 if (!arg2)
3296 if (pedantic && (complain & tf_error))
3297 pedwarn ("ISO C++ forbids omitting the middle term of a ?: expression");
3299 /* Make sure that lvalues remain lvalues. See g++.oliva/ext1.C. */
3300 if (real_lvalue_p (arg1))
3301 arg2 = arg1 = stabilize_reference (arg1);
3302 else
3303 arg2 = arg1 = save_expr (arg1);
3306 /* [expr.cond]
3308 The first expr ession is implicitly converted to bool (clause
3309 _conv_). */
3310 arg1 = perform_implicit_conversion (boolean_type_node, arg1, complain);
3312 /* If something has already gone wrong, just pass that fact up the
3313 tree. */
3314 if (error_operand_p (arg1)
3315 || error_operand_p (arg2)
3316 || error_operand_p (arg3))
3317 return error_mark_node;
3319 /* [expr.cond]
3321 If either the second or the third operand has type (possibly
3322 cv-qualified) void, then the lvalue-to-rvalue (_conv.lval_),
3323 array-to-pointer (_conv.array_), and function-to-pointer
3324 (_conv.func_) standard conversions are performed on the second
3325 and third operands. */
3326 arg2_type = unlowered_expr_type (arg2);
3327 arg3_type = unlowered_expr_type (arg3);
3328 if (VOID_TYPE_P (arg2_type) || VOID_TYPE_P (arg3_type))
3330 /* Do the conversions. We don't these for `void' type arguments
3331 since it can't have any effect and since decay_conversion
3332 does not handle that case gracefully. */
3333 if (!VOID_TYPE_P (arg2_type))
3334 arg2 = decay_conversion (arg2);
3335 if (!VOID_TYPE_P (arg3_type))
3336 arg3 = decay_conversion (arg3);
3337 arg2_type = TREE_TYPE (arg2);
3338 arg3_type = TREE_TYPE (arg3);
3340 /* [expr.cond]
3342 One of the following shall hold:
3344 --The second or the third operand (but not both) is a
3345 throw-expression (_except.throw_); the result is of the
3346 type of the other and is an rvalue.
3348 --Both the second and the third operands have type void; the
3349 result is of type void and is an rvalue.
3351 We must avoid calling force_rvalue for expressions of type
3352 "void" because it will complain that their value is being
3353 used. */
3354 if (TREE_CODE (arg2) == THROW_EXPR
3355 && TREE_CODE (arg3) != THROW_EXPR)
3357 if (!VOID_TYPE_P (arg3_type))
3358 arg3 = force_rvalue (arg3);
3359 arg3_type = TREE_TYPE (arg3);
3360 result_type = arg3_type;
3362 else if (TREE_CODE (arg2) != THROW_EXPR
3363 && TREE_CODE (arg3) == THROW_EXPR)
3365 if (!VOID_TYPE_P (arg2_type))
3366 arg2 = force_rvalue (arg2);
3367 arg2_type = TREE_TYPE (arg2);
3368 result_type = arg2_type;
3370 else if (VOID_TYPE_P (arg2_type) && VOID_TYPE_P (arg3_type))
3371 result_type = void_type_node;
3372 else
3374 if (complain & tf_error)
3376 if (VOID_TYPE_P (arg2_type))
3377 error ("second operand to the conditional operator "
3378 "is of type %<void%>, "
3379 "but the third operand is neither a throw-expression "
3380 "nor of type %<void%>");
3381 else
3382 error ("third operand to the conditional operator "
3383 "is of type %<void%>, "
3384 "but the second operand is neither a throw-expression "
3385 "nor of type %<void%>");
3387 return error_mark_node;
3390 lvalue_p = false;
3391 goto valid_operands;
3393 /* [expr.cond]
3395 Otherwise, if the second and third operand have different types,
3396 and either has (possibly cv-qualified) class type, an attempt is
3397 made to convert each of those operands to the type of the other. */
3398 else if (!same_type_p (arg2_type, arg3_type)
3399 && (CLASS_TYPE_P (arg2_type) || CLASS_TYPE_P (arg3_type)))
3401 conversion *conv2;
3402 conversion *conv3;
3404 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3405 p = conversion_obstack_alloc (0);
3407 conv2 = conditional_conversion (arg2, arg3);
3408 conv3 = conditional_conversion (arg3, arg2);
3410 /* [expr.cond]
3412 If both can be converted, or one can be converted but the
3413 conversion is ambiguous, the program is ill-formed. If
3414 neither can be converted, the operands are left unchanged and
3415 further checking is performed as described below. If exactly
3416 one conversion is possible, that conversion is applied to the
3417 chosen operand and the converted operand is used in place of
3418 the original operand for the remainder of this section. */
3419 if ((conv2 && !conv2->bad_p
3420 && conv3 && !conv3->bad_p)
3421 || (conv2 && conv2->kind == ck_ambig)
3422 || (conv3 && conv3->kind == ck_ambig))
3424 error ("operands to ?: have different types %qT and %qT",
3425 arg2_type, arg3_type);
3426 result = error_mark_node;
3428 else if (conv2 && (!conv2->bad_p || !conv3))
3430 arg2 = convert_like (conv2, arg2, complain);
3431 arg2 = convert_from_reference (arg2);
3432 arg2_type = TREE_TYPE (arg2);
3433 /* Even if CONV2 is a valid conversion, the result of the
3434 conversion may be invalid. For example, if ARG3 has type
3435 "volatile X", and X does not have a copy constructor
3436 accepting a "volatile X&", then even if ARG2 can be
3437 converted to X, the conversion will fail. */
3438 if (error_operand_p (arg2))
3439 result = error_mark_node;
3441 else if (conv3 && (!conv3->bad_p || !conv2))
3443 arg3 = convert_like (conv3, arg3, complain);
3444 arg3 = convert_from_reference (arg3);
3445 arg3_type = TREE_TYPE (arg3);
3446 if (error_operand_p (arg3))
3447 result = error_mark_node;
3450 /* Free all the conversions we allocated. */
3451 obstack_free (&conversion_obstack, p);
3453 if (result)
3454 return result;
3456 /* If, after the conversion, both operands have class type,
3457 treat the cv-qualification of both operands as if it were the
3458 union of the cv-qualification of the operands.
3460 The standard is not clear about what to do in this
3461 circumstance. For example, if the first operand has type
3462 "const X" and the second operand has a user-defined
3463 conversion to "volatile X", what is the type of the second
3464 operand after this step? Making it be "const X" (matching
3465 the first operand) seems wrong, as that discards the
3466 qualification without actually performing a copy. Leaving it
3467 as "volatile X" seems wrong as that will result in the
3468 conditional expression failing altogether, even though,
3469 according to this step, the one operand could be converted to
3470 the type of the other. */
3471 if ((conv2 || conv3)
3472 && CLASS_TYPE_P (arg2_type)
3473 && TYPE_QUALS (arg2_type) != TYPE_QUALS (arg3_type))
3474 arg2_type = arg3_type =
3475 cp_build_qualified_type (arg2_type,
3476 TYPE_QUALS (arg2_type)
3477 | TYPE_QUALS (arg3_type));
3480 /* [expr.cond]
3482 If the second and third operands are lvalues and have the same
3483 type, the result is of that type and is an lvalue. */
3484 if (real_lvalue_p (arg2)
3485 && real_lvalue_p (arg3)
3486 && same_type_p (arg2_type, arg3_type))
3488 result_type = arg2_type;
3489 goto valid_operands;
3492 /* [expr.cond]
3494 Otherwise, the result is an rvalue. If the second and third
3495 operand do not have the same type, and either has (possibly
3496 cv-qualified) class type, overload resolution is used to
3497 determine the conversions (if any) to be applied to the operands
3498 (_over.match.oper_, _over.built_). */
3499 lvalue_p = false;
3500 if (!same_type_p (arg2_type, arg3_type)
3501 && (CLASS_TYPE_P (arg2_type) || CLASS_TYPE_P (arg3_type)))
3503 tree args[3];
3504 conversion *conv;
3505 bool any_viable_p;
3507 /* Rearrange the arguments so that add_builtin_candidate only has
3508 to know about two args. In build_builtin_candidates, the
3509 arguments are unscrambled. */
3510 args[0] = arg2;
3511 args[1] = arg3;
3512 args[2] = arg1;
3513 add_builtin_candidates (&candidates,
3514 COND_EXPR,
3515 NOP_EXPR,
3516 ansi_opname (COND_EXPR),
3517 args,
3518 LOOKUP_NORMAL);
3520 /* [expr.cond]
3522 If the overload resolution fails, the program is
3523 ill-formed. */
3524 candidates = splice_viable (candidates, pedantic, &any_viable_p);
3525 if (!any_viable_p)
3527 if (complain & tf_error)
3529 op_error (COND_EXPR, NOP_EXPR, arg1, arg2, arg3, "no match");
3530 print_z_candidates (candidates);
3532 return error_mark_node;
3534 cand = tourney (candidates);
3535 if (!cand)
3537 if (complain & tf_error)
3539 op_error (COND_EXPR, NOP_EXPR, arg1, arg2, arg3, "no match");
3540 print_z_candidates (candidates);
3542 return error_mark_node;
3545 /* [expr.cond]
3547 Otherwise, the conversions thus determined are applied, and
3548 the converted operands are used in place of the original
3549 operands for the remainder of this section. */
3550 conv = cand->convs[0];
3551 arg1 = convert_like (conv, arg1, complain);
3552 conv = cand->convs[1];
3553 arg2 = convert_like (conv, arg2, complain);
3554 conv = cand->convs[2];
3555 arg3 = convert_like (conv, arg3, complain);
3558 /* [expr.cond]
3560 Lvalue-to-rvalue (_conv.lval_), array-to-pointer (_conv.array_),
3561 and function-to-pointer (_conv.func_) standard conversions are
3562 performed on the second and third operands.
3564 We need to force the lvalue-to-rvalue conversion here for class types,
3565 so we get TARGET_EXPRs; trying to deal with a COND_EXPR of class rvalues
3566 that isn't wrapped with a TARGET_EXPR plays havoc with exception
3567 regions. */
3569 arg2 = force_rvalue (arg2);
3570 if (!CLASS_TYPE_P (arg2_type))
3571 arg2_type = TREE_TYPE (arg2);
3573 arg3 = force_rvalue (arg3);
3574 if (!CLASS_TYPE_P (arg2_type))
3575 arg3_type = TREE_TYPE (arg3);
3577 if (arg2 == error_mark_node || arg3 == error_mark_node)
3578 return error_mark_node;
3580 /* [expr.cond]
3582 After those conversions, one of the following shall hold:
3584 --The second and third operands have the same type; the result is of
3585 that type. */
3586 if (same_type_p (arg2_type, arg3_type))
3587 result_type = arg2_type;
3588 /* [expr.cond]
3590 --The second and third operands have arithmetic or enumeration
3591 type; the usual arithmetic conversions are performed to bring
3592 them to a common type, and the result is of that type. */
3593 else if ((ARITHMETIC_TYPE_P (arg2_type)
3594 || TREE_CODE (arg2_type) == ENUMERAL_TYPE)
3595 && (ARITHMETIC_TYPE_P (arg3_type)
3596 || TREE_CODE (arg3_type) == ENUMERAL_TYPE))
3598 /* In this case, there is always a common type. */
3599 result_type = type_after_usual_arithmetic_conversions (arg2_type,
3600 arg3_type);
3602 if (TREE_CODE (arg2_type) == ENUMERAL_TYPE
3603 && TREE_CODE (arg3_type) == ENUMERAL_TYPE)
3605 if (complain & tf_warning)
3606 warning (0,
3607 "enumeral mismatch in conditional expression: %qT vs %qT",
3608 arg2_type, arg3_type);
3610 else if (extra_warnings
3611 && ((TREE_CODE (arg2_type) == ENUMERAL_TYPE
3612 && !same_type_p (arg3_type, type_promotes_to (arg2_type)))
3613 || (TREE_CODE (arg3_type) == ENUMERAL_TYPE
3614 && !same_type_p (arg2_type, type_promotes_to (arg3_type)))))
3616 if (complain & tf_warning)
3617 warning (0,
3618 "enumeral and non-enumeral type in conditional expression");
3621 arg2 = perform_implicit_conversion (result_type, arg2, complain);
3622 arg3 = perform_implicit_conversion (result_type, arg3, complain);
3624 /* [expr.cond]
3626 --The second and third operands have pointer type, or one has
3627 pointer type and the other is a null pointer constant; pointer
3628 conversions (_conv.ptr_) and qualification conversions
3629 (_conv.qual_) are performed to bring them to their composite
3630 pointer type (_expr.rel_). The result is of the composite
3631 pointer type.
3633 --The second and third operands have pointer to member type, or
3634 one has pointer to member type and the other is a null pointer
3635 constant; pointer to member conversions (_conv.mem_) and
3636 qualification conversions (_conv.qual_) are performed to bring
3637 them to a common type, whose cv-qualification shall match the
3638 cv-qualification of either the second or the third operand.
3639 The result is of the common type. */
3640 else if ((null_ptr_cst_p (arg2)
3641 && (TYPE_PTR_P (arg3_type) || TYPE_PTR_TO_MEMBER_P (arg3_type)))
3642 || (null_ptr_cst_p (arg3)
3643 && (TYPE_PTR_P (arg2_type) || TYPE_PTR_TO_MEMBER_P (arg2_type)))
3644 || (TYPE_PTR_P (arg2_type) && TYPE_PTR_P (arg3_type))
3645 || (TYPE_PTRMEM_P (arg2_type) && TYPE_PTRMEM_P (arg3_type))
3646 || (TYPE_PTRMEMFUNC_P (arg2_type) && TYPE_PTRMEMFUNC_P (arg3_type)))
3648 result_type = composite_pointer_type (arg2_type, arg3_type, arg2,
3649 arg3, "conditional expression",
3650 complain);
3651 if (result_type == error_mark_node)
3652 return error_mark_node;
3653 arg2 = perform_implicit_conversion (result_type, arg2, complain);
3654 arg3 = perform_implicit_conversion (result_type, arg3, complain);
3657 if (!result_type)
3659 if (complain & tf_error)
3660 error ("operands to ?: have different types %qT and %qT",
3661 arg2_type, arg3_type);
3662 return error_mark_node;
3665 valid_operands:
3666 result = fold_if_not_in_template (build3 (COND_EXPR, result_type, arg1,
3667 arg2, arg3));
3668 /* We can't use result_type below, as fold might have returned a
3669 throw_expr. */
3671 if (!lvalue_p)
3673 /* Expand both sides into the same slot, hopefully the target of
3674 the ?: expression. We used to check for TARGET_EXPRs here,
3675 but now we sometimes wrap them in NOP_EXPRs so the test would
3676 fail. */
3677 if (CLASS_TYPE_P (TREE_TYPE (result)))
3678 result = get_target_expr (result);
3679 /* If this expression is an rvalue, but might be mistaken for an
3680 lvalue, we must add a NON_LVALUE_EXPR. */
3681 result = rvalue (result);
3684 return result;
3687 /* OPERAND is an operand to an expression. Perform necessary steps
3688 required before using it. If OPERAND is NULL_TREE, NULL_TREE is
3689 returned. */
3691 static tree
3692 prep_operand (tree operand)
3694 if (operand)
3696 if (CLASS_TYPE_P (TREE_TYPE (operand))
3697 && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (operand)))
3698 /* Make sure the template type is instantiated now. */
3699 instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (operand)));
3702 return operand;
3705 /* Add each of the viable functions in FNS (a FUNCTION_DECL or
3706 OVERLOAD) to the CANDIDATES, returning an updated list of
3707 CANDIDATES. The ARGS are the arguments provided to the call,
3708 without any implicit object parameter. The EXPLICIT_TARGS are
3709 explicit template arguments provided. TEMPLATE_ONLY is true if
3710 only template functions should be considered. CONVERSION_PATH,
3711 ACCESS_PATH, and FLAGS are as for add_function_candidate. */
3713 static void
3714 add_candidates (tree fns, tree args,
3715 tree explicit_targs, bool template_only,
3716 tree conversion_path, tree access_path,
3717 int flags,
3718 struct z_candidate **candidates)
3720 tree ctype;
3721 tree non_static_args;
3723 ctype = conversion_path ? BINFO_TYPE (conversion_path) : NULL_TREE;
3724 /* Delay creating the implicit this parameter until it is needed. */
3725 non_static_args = NULL_TREE;
3727 while (fns)
3729 tree fn;
3730 tree fn_args;
3732 fn = OVL_CURRENT (fns);
3733 /* Figure out which set of arguments to use. */
3734 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn))
3736 /* If this function is a non-static member, prepend the implicit
3737 object parameter. */
3738 if (!non_static_args)
3739 non_static_args = tree_cons (NULL_TREE,
3740 build_this (TREE_VALUE (args)),
3741 TREE_CHAIN (args));
3742 fn_args = non_static_args;
3744 else
3745 /* Otherwise, just use the list of arguments provided. */
3746 fn_args = args;
3748 if (TREE_CODE (fn) == TEMPLATE_DECL)
3749 add_template_candidate (candidates,
3751 ctype,
3752 explicit_targs,
3753 fn_args,
3754 NULL_TREE,
3755 access_path,
3756 conversion_path,
3757 flags,
3758 DEDUCE_CALL);
3759 else if (!template_only)
3760 add_function_candidate (candidates,
3762 ctype,
3763 fn_args,
3764 access_path,
3765 conversion_path,
3766 flags);
3767 fns = OVL_NEXT (fns);
3771 tree
3772 build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
3773 bool *overloaded_p, tsubst_flags_t complain)
3775 struct z_candidate *candidates = 0, *cand;
3776 tree arglist, fnname;
3777 tree args[3];
3778 tree result = NULL_TREE;
3779 bool result_valid_p = false;
3780 enum tree_code code2 = NOP_EXPR;
3781 conversion *conv;
3782 void *p;
3783 bool strict_p;
3784 bool any_viable_p;
3785 bool expl_eq_arg1 = false;
3787 if (error_operand_p (arg1)
3788 || error_operand_p (arg2)
3789 || error_operand_p (arg3))
3790 return error_mark_node;
3792 if (code == MODIFY_EXPR)
3794 code2 = TREE_CODE (arg3);
3795 arg3 = NULL_TREE;
3796 fnname = ansi_assopname (code2);
3798 else
3799 fnname = ansi_opname (code);
3801 arg1 = prep_operand (arg1);
3803 switch (code)
3805 case NEW_EXPR:
3806 case VEC_NEW_EXPR:
3807 case VEC_DELETE_EXPR:
3808 case DELETE_EXPR:
3809 /* Use build_op_new_call and build_op_delete_call instead. */
3810 gcc_unreachable ();
3812 case CALL_EXPR:
3813 return build_object_call (arg1, arg2, complain);
3815 case TRUTH_ORIF_EXPR:
3816 case TRUTH_ANDIF_EXPR:
3817 case TRUTH_AND_EXPR:
3818 case TRUTH_OR_EXPR:
3819 if (COMPARISON_CLASS_P (arg1))
3820 expl_eq_arg1 = true;
3821 default:
3822 break;
3825 arg2 = prep_operand (arg2);
3826 arg3 = prep_operand (arg3);
3828 if (code == COND_EXPR)
3830 if (arg2 == NULL_TREE
3831 || TREE_CODE (TREE_TYPE (arg2)) == VOID_TYPE
3832 || TREE_CODE (TREE_TYPE (arg3)) == VOID_TYPE
3833 || (! IS_OVERLOAD_TYPE (TREE_TYPE (arg2))
3834 && ! IS_OVERLOAD_TYPE (TREE_TYPE (arg3))))
3835 goto builtin;
3837 else if (! IS_OVERLOAD_TYPE (TREE_TYPE (arg1))
3838 && (! arg2 || ! IS_OVERLOAD_TYPE (TREE_TYPE (arg2))))
3839 goto builtin;
3841 if (code == POSTINCREMENT_EXPR || code == POSTDECREMENT_EXPR)
3842 arg2 = integer_zero_node;
3844 arglist = NULL_TREE;
3845 if (arg3)
3846 arglist = tree_cons (NULL_TREE, arg3, arglist);
3847 if (arg2)
3848 arglist = tree_cons (NULL_TREE, arg2, arglist);
3849 arglist = tree_cons (NULL_TREE, arg1, arglist);
3851 /* Get the high-water mark for the CONVERSION_OBSTACK. */
3852 p = conversion_obstack_alloc (0);
3854 /* Add namespace-scope operators to the list of functions to
3855 consider. */
3856 add_candidates (lookup_function_nonclass (fnname, arglist, /*block_p=*/true),
3857 arglist, NULL_TREE, false, NULL_TREE, NULL_TREE,
3858 flags, &candidates);
3859 /* Add class-member operators to the candidate set. */
3860 if (CLASS_TYPE_P (TREE_TYPE (arg1)))
3862 tree fns;
3864 fns = lookup_fnfields (TREE_TYPE (arg1), fnname, 1);
3865 if (fns == error_mark_node)
3867 result = error_mark_node;
3868 goto user_defined_result_ready;
3870 if (fns)
3871 add_candidates (BASELINK_FUNCTIONS (fns), arglist,
3872 NULL_TREE, false,
3873 BASELINK_BINFO (fns),
3874 TYPE_BINFO (TREE_TYPE (arg1)),
3875 flags, &candidates);
3878 /* Rearrange the arguments for ?: so that add_builtin_candidate only has
3879 to know about two args; a builtin candidate will always have a first
3880 parameter of type bool. We'll handle that in
3881 build_builtin_candidate. */
3882 if (code == COND_EXPR)
3884 args[0] = arg2;
3885 args[1] = arg3;
3886 args[2] = arg1;
3888 else
3890 args[0] = arg1;
3891 args[1] = arg2;
3892 args[2] = NULL_TREE;
3895 add_builtin_candidates (&candidates, code, code2, fnname, args, flags);
3897 switch (code)
3899 case COMPOUND_EXPR:
3900 case ADDR_EXPR:
3901 /* For these, the built-in candidates set is empty
3902 [over.match.oper]/3. We don't want non-strict matches
3903 because exact matches are always possible with built-in
3904 operators. The built-in candidate set for COMPONENT_REF
3905 would be empty too, but since there are no such built-in
3906 operators, we accept non-strict matches for them. */
3907 strict_p = true;
3908 break;
3910 default:
3911 strict_p = pedantic;
3912 break;
3915 candidates = splice_viable (candidates, strict_p, &any_viable_p);
3916 if (!any_viable_p)
3918 switch (code)
3920 case POSTINCREMENT_EXPR:
3921 case POSTDECREMENT_EXPR:
3922 /* Don't try anything fancy if we're not allowed to produce
3923 errors. */
3924 if (!(complain & tf_error))
3925 return error_mark_node;
3927 /* Look for an `operator++ (int)'. If they didn't have
3928 one, then we fall back to the old way of doing things. */
3929 if (flags & LOOKUP_COMPLAIN)
3930 permerror ("no %<%D(int)%> declared for postfix %qs, "
3931 "trying prefix operator instead",
3932 fnname,
3933 operator_name_info[code].name);
3934 if (code == POSTINCREMENT_EXPR)
3935 code = PREINCREMENT_EXPR;
3936 else
3937 code = PREDECREMENT_EXPR;
3938 result = build_new_op (code, flags, arg1, NULL_TREE, NULL_TREE,
3939 overloaded_p, complain);
3940 break;
3942 /* The caller will deal with these. */
3943 case ADDR_EXPR:
3944 case COMPOUND_EXPR:
3945 case COMPONENT_REF:
3946 result = NULL_TREE;
3947 result_valid_p = true;
3948 break;
3950 default:
3951 if ((flags & LOOKUP_COMPLAIN) && (complain & tf_error))
3953 op_error (code, code2, arg1, arg2, arg3, "no match");
3954 print_z_candidates (candidates);
3956 result = error_mark_node;
3957 break;
3960 else
3962 cand = tourney (candidates);
3963 if (cand == 0)
3965 if ((flags & LOOKUP_COMPLAIN) && (complain & tf_error))
3967 op_error (code, code2, arg1, arg2, arg3, "ambiguous overload");
3968 print_z_candidates (candidates);
3970 result = error_mark_node;
3972 else if (TREE_CODE (cand->fn) == FUNCTION_DECL)
3974 if (overloaded_p)
3975 *overloaded_p = true;
3977 if (resolve_args (arglist) == error_mark_node)
3978 result = error_mark_node;
3979 else
3980 result = build_over_call (cand, LOOKUP_NORMAL, complain);
3982 else
3984 /* Give any warnings we noticed during overload resolution. */
3985 if (cand->warnings && (complain & tf_warning))
3987 struct candidate_warning *w;
3988 for (w = cand->warnings; w; w = w->next)
3989 joust (cand, w->loser, 1);
3992 /* Check for comparison of different enum types. */
3993 switch (code)
3995 case GT_EXPR:
3996 case LT_EXPR:
3997 case GE_EXPR:
3998 case LE_EXPR:
3999 case EQ_EXPR:
4000 case NE_EXPR:
4001 if (TREE_CODE (TREE_TYPE (arg1)) == ENUMERAL_TYPE
4002 && TREE_CODE (TREE_TYPE (arg2)) == ENUMERAL_TYPE
4003 && (TYPE_MAIN_VARIANT (TREE_TYPE (arg1))
4004 != TYPE_MAIN_VARIANT (TREE_TYPE (arg2)))
4005 && (complain & tf_warning))
4007 warning (OPT_Wenum_compare,
4008 "comparison between %q#T and %q#T",
4009 TREE_TYPE (arg1), TREE_TYPE (arg2));
4011 break;
4012 default:
4013 break;
4016 /* We need to strip any leading REF_BIND so that bitfields
4017 don't cause errors. This should not remove any important
4018 conversions, because builtins don't apply to class
4019 objects directly. */
4020 conv = cand->convs[0];
4021 if (conv->kind == ck_ref_bind)
4022 conv = conv->u.next;
4023 arg1 = convert_like (conv, arg1, complain);
4024 if (arg2)
4026 conv = cand->convs[1];
4027 if (conv->kind == ck_ref_bind)
4028 conv = conv->u.next;
4029 arg2 = convert_like (conv, arg2, complain);
4031 if (arg3)
4033 conv = cand->convs[2];
4034 if (conv->kind == ck_ref_bind)
4035 conv = conv->u.next;
4036 arg3 = convert_like (conv, arg3, complain);
4039 if (!expl_eq_arg1)
4041 if (complain & tf_warning)
4042 warn_logical_operator (code, arg1, arg2);
4043 expl_eq_arg1 = true;
4048 user_defined_result_ready:
4050 /* Free all the conversions we allocated. */
4051 obstack_free (&conversion_obstack, p);
4053 if (result || result_valid_p)
4054 return result;
4056 builtin:
4057 switch (code)
4059 case MODIFY_EXPR:
4060 return cp_build_modify_expr (arg1, code2, arg2, complain);
4062 case INDIRECT_REF:
4063 return cp_build_indirect_ref (arg1, "unary *", complain);
4065 case TRUTH_ANDIF_EXPR:
4066 case TRUTH_ORIF_EXPR:
4067 case TRUTH_AND_EXPR:
4068 case TRUTH_OR_EXPR:
4069 if (!expl_eq_arg1)
4070 warn_logical_operator (code, arg1, arg2);
4071 case PLUS_EXPR:
4072 case MINUS_EXPR:
4073 case MULT_EXPR:
4074 case TRUNC_DIV_EXPR:
4075 case GT_EXPR:
4076 case LT_EXPR:
4077 case GE_EXPR:
4078 case LE_EXPR:
4079 case EQ_EXPR:
4080 case NE_EXPR:
4081 case MAX_EXPR:
4082 case MIN_EXPR:
4083 case LSHIFT_EXPR:
4084 case RSHIFT_EXPR:
4085 case TRUNC_MOD_EXPR:
4086 case BIT_AND_EXPR:
4087 case BIT_IOR_EXPR:
4088 case BIT_XOR_EXPR:
4089 return cp_build_binary_op (code, arg1, arg2, complain);
4091 case UNARY_PLUS_EXPR:
4092 case NEGATE_EXPR:
4093 case BIT_NOT_EXPR:
4094 case TRUTH_NOT_EXPR:
4095 case PREINCREMENT_EXPR:
4096 case POSTINCREMENT_EXPR:
4097 case PREDECREMENT_EXPR:
4098 case POSTDECREMENT_EXPR:
4099 case REALPART_EXPR:
4100 case IMAGPART_EXPR:
4101 return cp_build_unary_op (code, arg1, candidates != 0, complain);
4103 case ARRAY_REF:
4104 return build_array_ref (arg1, arg2);
4106 case COND_EXPR:
4107 return build_conditional_expr (arg1, arg2, arg3, complain);
4109 case MEMBER_REF:
4110 return build_m_component_ref (cp_build_indirect_ref (arg1, NULL,
4111 complain),
4112 arg2);
4114 /* The caller will deal with these. */
4115 case ADDR_EXPR:
4116 case COMPONENT_REF:
4117 case COMPOUND_EXPR:
4118 return NULL_TREE;
4120 default:
4121 gcc_unreachable ();
4123 return NULL_TREE;
4126 /* Build a call to operator delete. This has to be handled very specially,
4127 because the restrictions on what signatures match are different from all
4128 other call instances. For a normal delete, only a delete taking (void *)
4129 or (void *, size_t) is accepted. For a placement delete, only an exact
4130 match with the placement new is accepted.
4132 CODE is either DELETE_EXPR or VEC_DELETE_EXPR.
4133 ADDR is the pointer to be deleted.
4134 SIZE is the size of the memory block to be deleted.
4135 GLOBAL_P is true if the delete-expression should not consider
4136 class-specific delete operators.
4137 PLACEMENT is the corresponding placement new call, or NULL_TREE.
4139 If this call to "operator delete" is being generated as part to
4140 deallocate memory allocated via a new-expression (as per [expr.new]
4141 which requires that if the initialization throws an exception then
4142 we call a deallocation function), then ALLOC_FN is the allocation
4143 function. */
4145 tree
4146 build_op_delete_call (enum tree_code code, tree addr, tree size,
4147 bool global_p, tree placement,
4148 tree alloc_fn)
4150 tree fn = NULL_TREE;
4151 tree fns, fnname, argtypes, type;
4152 int pass;
4154 if (addr == error_mark_node)
4155 return error_mark_node;
4157 type = strip_array_types (TREE_TYPE (TREE_TYPE (addr)));
4159 fnname = ansi_opname (code);
4161 if (CLASS_TYPE_P (type)
4162 && COMPLETE_TYPE_P (complete_type (type))
4163 && !global_p)
4164 /* In [class.free]
4166 If the result of the lookup is ambiguous or inaccessible, or if
4167 the lookup selects a placement deallocation function, the
4168 program is ill-formed.
4170 Therefore, we ask lookup_fnfields to complain about ambiguity. */
4172 fns = lookup_fnfields (TYPE_BINFO (type), fnname, 1);
4173 if (fns == error_mark_node)
4174 return error_mark_node;
4176 else
4177 fns = NULL_TREE;
4179 if (fns == NULL_TREE)
4180 fns = lookup_name_nonclass (fnname);
4182 /* Strip const and volatile from addr. */
4183 addr = cp_convert (ptr_type_node, addr);
4185 if (placement)
4187 /* Get the parameter types for the allocation function that is
4188 being called. */
4189 gcc_assert (alloc_fn != NULL_TREE);
4190 argtypes = TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (alloc_fn)));
4192 else
4194 /* First try it without the size argument. */
4195 argtypes = void_list_node;
4198 /* We make two tries at finding a matching `operator delete'. On
4199 the first pass, we look for a one-operator (or placement)
4200 operator delete. If we're not doing placement delete, then on
4201 the second pass we look for a two-argument delete. */
4202 for (pass = 0; pass < (placement ? 1 : 2); ++pass)
4204 /* Go through the `operator delete' functions looking for one
4205 with a matching type. */
4206 for (fn = BASELINK_P (fns) ? BASELINK_FUNCTIONS (fns) : fns;
4208 fn = OVL_NEXT (fn))
4210 tree t;
4212 /* The first argument must be "void *". */
4213 t = TYPE_ARG_TYPES (TREE_TYPE (OVL_CURRENT (fn)));
4214 if (!same_type_p (TREE_VALUE (t), ptr_type_node))
4215 continue;
4216 t = TREE_CHAIN (t);
4217 /* On the first pass, check the rest of the arguments. */
4218 if (pass == 0)
4220 tree a = argtypes;
4221 while (a && t)
4223 if (!same_type_p (TREE_VALUE (a), TREE_VALUE (t)))
4224 break;
4225 a = TREE_CHAIN (a);
4226 t = TREE_CHAIN (t);
4228 if (!a && !t)
4229 break;
4231 /* On the second pass, look for a function with exactly two
4232 arguments: "void *" and "size_t". */
4233 else if (pass == 1
4234 /* For "operator delete(void *, ...)" there will be
4235 no second argument, but we will not get an exact
4236 match above. */
4237 && t
4238 && same_type_p (TREE_VALUE (t), size_type_node)
4239 && TREE_CHAIN (t) == void_list_node)
4240 break;
4243 /* If we found a match, we're done. */
4244 if (fn)
4245 break;
4248 /* If we have a matching function, call it. */
4249 if (fn)
4251 /* Make sure we have the actual function, and not an
4252 OVERLOAD. */
4253 fn = OVL_CURRENT (fn);
4255 /* If the FN is a member function, make sure that it is
4256 accessible. */
4257 if (DECL_CLASS_SCOPE_P (fn))
4258 perform_or_defer_access_check (TYPE_BINFO (type), fn, fn);
4260 if (placement)
4262 /* The placement args might not be suitable for overload
4263 resolution at this point, so build the call directly. */
4264 int nargs = call_expr_nargs (placement);
4265 tree *argarray = (tree *) alloca (nargs * sizeof (tree));
4266 int i;
4267 argarray[0] = addr;
4268 for (i = 1; i < nargs; i++)
4269 argarray[i] = CALL_EXPR_ARG (placement, i);
4270 mark_used (fn);
4271 return build_cxx_call (fn, nargs, argarray);
4273 else
4275 tree args;
4276 if (pass == 0)
4277 args = tree_cons (NULL_TREE, addr, NULL_TREE);
4278 else
4279 args = tree_cons (NULL_TREE, addr,
4280 build_tree_list (NULL_TREE, size));
4281 return cp_build_function_call (fn, args, tf_warning_or_error);
4285 /* [expr.new]
4287 If no unambiguous matching deallocation function can be found,
4288 propagating the exception does not cause the object's memory to
4289 be freed. */
4290 if (alloc_fn)
4292 if (!placement)
4293 warning (0, "no corresponding deallocation function for %qD",
4294 alloc_fn);
4295 return NULL_TREE;
4298 error ("no suitable %<operator %s%> for %qT",
4299 operator_name_info[(int)code].name, type);
4300 return error_mark_node;
4303 /* If the current scope isn't allowed to access DECL along
4304 BASETYPE_PATH, give an error. The most derived class in
4305 BASETYPE_PATH is the one used to qualify DECL. DIAG_DECL is
4306 the declaration to use in the error diagnostic. */
4308 bool
4309 enforce_access (tree basetype_path, tree decl, tree diag_decl)
4311 gcc_assert (TREE_CODE (basetype_path) == TREE_BINFO);
4313 if (!accessible_p (basetype_path, decl, true))
4315 if (TREE_PRIVATE (decl))
4316 error ("%q+#D is private", diag_decl);
4317 else if (TREE_PROTECTED (decl))
4318 error ("%q+#D is protected", diag_decl);
4319 else
4320 error ("%q+#D is inaccessible", diag_decl);
4321 error ("within this context");
4322 return false;
4325 return true;
4328 /* Initialize a temporary of type TYPE with EXPR. The FLAGS are a
4329 bitwise or of LOOKUP_* values. If any errors are warnings are
4330 generated, set *DIAGNOSTIC_FN to "error" or "warning",
4331 respectively. If no diagnostics are generated, set *DIAGNOSTIC_FN
4332 to NULL. */
4334 static tree
4335 build_temp (tree expr, tree type, int flags,
4336 diagnostic_fn_t *diagnostic_fn)
4338 int savew, savee;
4340 savew = warningcount, savee = errorcount;
4341 expr = build_special_member_call (NULL_TREE,
4342 complete_ctor_identifier,
4343 build_tree_list (NULL_TREE, expr),
4344 type, flags, tf_warning_or_error);
4345 if (warningcount > savew)
4346 *diagnostic_fn = warning0;
4347 else if (errorcount > savee)
4348 *diagnostic_fn = error;
4349 else
4350 *diagnostic_fn = NULL;
4351 return expr;
4354 /* Perform warnings about peculiar, but valid, conversions from/to NULL.
4355 EXPR is implicitly converted to type TOTYPE.
4356 FN and ARGNUM are used for diagnostics. */
4358 static void
4359 conversion_null_warnings (tree totype, tree expr, tree fn, int argnum)
4361 tree t = non_reference (totype);
4363 /* Issue warnings about peculiar, but valid, uses of NULL. */
4364 if (expr == null_node && TREE_CODE (t) != BOOLEAN_TYPE && ARITHMETIC_TYPE_P (t))
4366 if (fn)
4367 warning (OPT_Wconversion, "passing NULL to non-pointer argument %P of %qD",
4368 argnum, fn);
4369 else
4370 warning (OPT_Wconversion, "converting to non-pointer type %qT from NULL", t);
4373 /* Issue warnings if "false" is converted to a NULL pointer */
4374 else if (expr == boolean_false_node && fn && POINTER_TYPE_P (t))
4375 warning (OPT_Wconversion,
4376 "converting %<false%> to pointer type for argument %P of %qD",
4377 argnum, fn);
4380 /* Perform the conversions in CONVS on the expression EXPR. FN and
4381 ARGNUM are used for diagnostics. ARGNUM is zero based, -1
4382 indicates the `this' argument of a method. INNER is nonzero when
4383 being called to continue a conversion chain. It is negative when a
4384 reference binding will be applied, positive otherwise. If
4385 ISSUE_CONVERSION_WARNINGS is true, warnings about suspicious
4386 conversions will be emitted if appropriate. If C_CAST_P is true,
4387 this conversion is coming from a C-style cast; in that case,
4388 conversions to inaccessible bases are permitted. */
4390 static tree
4391 convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
4392 int inner, bool issue_conversion_warnings,
4393 bool c_cast_p, tsubst_flags_t complain)
4395 tree totype = convs->type;
4396 diagnostic_fn_t diagnostic_fn;
4397 int flags;
4399 if (convs->bad_p
4400 && convs->kind != ck_user
4401 && convs->kind != ck_ambig
4402 && convs->kind != ck_ref_bind)
4404 conversion *t = convs;
4405 for (; t; t = convs->u.next)
4407 if (t->kind == ck_user || !t->bad_p)
4409 expr = convert_like_real (t, expr, fn, argnum, 1,
4410 /*issue_conversion_warnings=*/false,
4411 /*c_cast_p=*/false,
4412 complain);
4413 break;
4415 else if (t->kind == ck_ambig)
4416 return convert_like_real (t, expr, fn, argnum, 1,
4417 /*issue_conversion_warnings=*/false,
4418 /*c_cast_p=*/false,
4419 complain);
4420 else if (t->kind == ck_identity)
4421 break;
4423 if (complain & tf_error)
4425 permerror ("invalid conversion from %qT to %qT", TREE_TYPE (expr), totype);
4426 if (fn)
4427 permerror (" initializing argument %P of %qD", argnum, fn);
4429 else
4430 return error_mark_node;
4432 return cp_convert (totype, expr);
4435 if (issue_conversion_warnings && (complain & tf_warning))
4436 conversion_null_warnings (totype, expr, fn, argnum);
4438 switch (convs->kind)
4440 case ck_user:
4442 struct z_candidate *cand = convs->cand;
4443 tree convfn = cand->fn;
4444 unsigned i;
4446 /* Set user_conv_p on the argument conversions, so rvalue/base
4447 handling knows not to allow any more UDCs. */
4448 for (i = 0; i < cand->num_convs; ++i)
4449 cand->convs[i]->user_conv_p = true;
4451 expr = build_over_call (cand, LOOKUP_NORMAL, complain);
4453 /* If this is a constructor or a function returning an aggr type,
4454 we need to build up a TARGET_EXPR. */
4455 if (DECL_CONSTRUCTOR_P (convfn))
4456 expr = build_cplus_new (totype, expr);
4458 return expr;
4460 case ck_identity:
4461 if (type_unknown_p (expr))
4462 expr = instantiate_type (totype, expr, complain);
4463 /* Convert a constant to its underlying value, unless we are
4464 about to bind it to a reference, in which case we need to
4465 leave it as an lvalue. */
4466 if (inner >= 0)
4468 expr = decl_constant_value (expr);
4469 if (expr == null_node && INTEGRAL_TYPE_P (totype))
4470 /* If __null has been converted to an integer type, we do not
4471 want to warn about uses of EXPR as an integer, rather than
4472 as a pointer. */
4473 expr = build_int_cst (totype, 0);
4475 return expr;
4476 case ck_ambig:
4477 /* Call build_user_type_conversion again for the error. */
4478 return build_user_type_conversion
4479 (totype, convs->u.expr, LOOKUP_NORMAL);
4481 default:
4482 break;
4485 expr = convert_like_real (convs->u.next, expr, fn, argnum,
4486 convs->kind == ck_ref_bind ? -1 : 1,
4487 convs->kind == ck_ref_bind ? issue_conversion_warnings : false,
4488 c_cast_p,
4489 complain);
4490 if (expr == error_mark_node)
4491 return error_mark_node;
4493 switch (convs->kind)
4495 case ck_rvalue:
4496 expr = convert_bitfield_to_declared_type (expr);
4497 if (! MAYBE_CLASS_TYPE_P (totype))
4498 return expr;
4499 /* Else fall through. */
4500 case ck_base:
4501 if (convs->kind == ck_base && !convs->need_temporary_p)
4503 /* We are going to bind a reference directly to a base-class
4504 subobject of EXPR. */
4505 /* Build an expression for `*((base*) &expr)'. */
4506 expr = cp_build_unary_op (ADDR_EXPR, expr, 0, complain);
4507 expr = convert_to_base (expr, build_pointer_type (totype),
4508 !c_cast_p, /*nonnull=*/true);
4509 expr = cp_build_indirect_ref (expr, "implicit conversion", complain);
4510 return expr;
4513 /* Copy-initialization where the cv-unqualified version of the source
4514 type is the same class as, or a derived class of, the class of the
4515 destination [is treated as direct-initialization]. [dcl.init] */
4516 flags = LOOKUP_NORMAL|LOOKUP_ONLYCONVERTING;
4517 if (convs->user_conv_p)
4518 /* This conversion is being done in the context of a user-defined
4519 conversion (i.e. the second step of copy-initialization), so
4520 don't allow any more. */
4521 flags |= LOOKUP_NO_CONVERSION;
4522 expr = build_temp (expr, totype, flags, &diagnostic_fn);
4523 if (diagnostic_fn && fn)
4525 if ((complain & tf_error))
4526 diagnostic_fn (" initializing argument %P of %qD", argnum, fn);
4527 else if (diagnostic_fn == error)
4528 return error_mark_node;
4530 return build_cplus_new (totype, expr);
4532 case ck_ref_bind:
4534 tree ref_type = totype;
4536 /* If necessary, create a temporary.
4538 VA_ARG_EXPR and CONSTRUCTOR expressions are special cases
4539 that need temporaries, even when their types are reference
4540 compatible with the type of reference being bound, so the
4541 upcoming call to cp_build_unary_op (ADDR_EXPR, expr, ...)
4542 doesn't fail. */
4543 if (convs->need_temporary_p
4544 || TREE_CODE (expr) == CONSTRUCTOR
4545 || TREE_CODE (expr) == VA_ARG_EXPR)
4547 tree type = convs->u.next->type;
4548 cp_lvalue_kind lvalue = real_lvalue_p (expr);
4550 if (!CP_TYPE_CONST_NON_VOLATILE_P (TREE_TYPE (ref_type))
4551 && !TYPE_REF_IS_RVALUE (ref_type))
4553 if (complain & tf_error)
4555 /* If the reference is volatile or non-const, we
4556 cannot create a temporary. */
4557 if (lvalue & clk_bitfield)
4558 error ("cannot bind bitfield %qE to %qT",
4559 expr, ref_type);
4560 else if (lvalue & clk_packed)
4561 error ("cannot bind packed field %qE to %qT",
4562 expr, ref_type);
4563 else
4564 error ("cannot bind rvalue %qE to %qT", expr, ref_type);
4566 return error_mark_node;
4568 /* If the source is a packed field, and we must use a copy
4569 constructor, then building the target expr will require
4570 binding the field to the reference parameter to the
4571 copy constructor, and we'll end up with an infinite
4572 loop. If we can use a bitwise copy, then we'll be
4573 OK. */
4574 if ((lvalue & clk_packed)
4575 && CLASS_TYPE_P (type)
4576 && !TYPE_HAS_TRIVIAL_INIT_REF (type))
4578 if (complain & tf_error)
4579 error ("cannot bind packed field %qE to %qT",
4580 expr, ref_type);
4581 return error_mark_node;
4583 if (lvalue & clk_bitfield)
4585 expr = convert_bitfield_to_declared_type (expr);
4586 expr = fold_convert (type, expr);
4588 expr = build_target_expr_with_type (expr, type);
4591 /* Take the address of the thing to which we will bind the
4592 reference. */
4593 expr = cp_build_unary_op (ADDR_EXPR, expr, 1, complain);
4594 if (expr == error_mark_node)
4595 return error_mark_node;
4597 /* Convert it to a pointer to the type referred to by the
4598 reference. This will adjust the pointer if a derived to
4599 base conversion is being performed. */
4600 expr = cp_convert (build_pointer_type (TREE_TYPE (ref_type)),
4601 expr);
4602 /* Convert the pointer to the desired reference type. */
4603 return build_nop (ref_type, expr);
4606 case ck_lvalue:
4607 return decay_conversion (expr);
4609 case ck_qual:
4610 /* Warn about deprecated conversion if appropriate. */
4611 string_conv_p (totype, expr, 1);
4612 break;
4614 case ck_ptr:
4615 if (convs->base_p)
4616 expr = convert_to_base (expr, totype, !c_cast_p,
4617 /*nonnull=*/false);
4618 return build_nop (totype, expr);
4620 case ck_pmem:
4621 return convert_ptrmem (totype, expr, /*allow_inverse_p=*/false,
4622 c_cast_p);
4624 default:
4625 break;
4628 if (issue_conversion_warnings)
4629 expr = convert_and_check (totype, expr);
4630 else
4631 expr = convert (totype, expr);
4633 return expr;
4636 /* Build a call to __builtin_trap. */
4638 static tree
4639 call_builtin_trap (void)
4641 tree fn = implicit_built_in_decls[BUILT_IN_TRAP];
4643 gcc_assert (fn != NULL);
4644 fn = build_call_n (fn, 0);
4645 return fn;
4648 /* ARG is being passed to a varargs function. Perform any conversions
4649 required. Return the converted value. */
4651 tree
4652 convert_arg_to_ellipsis (tree arg)
4654 /* [expr.call]
4656 The lvalue-to-rvalue, array-to-pointer, and function-to-pointer
4657 standard conversions are performed. */
4658 arg = decay_conversion (arg);
4659 /* [expr.call]
4661 If the argument has integral or enumeration type that is subject
4662 to the integral promotions (_conv.prom_), or a floating point
4663 type that is subject to the floating point promotion
4664 (_conv.fpprom_), the value of the argument is converted to the
4665 promoted type before the call. */
4666 if (TREE_CODE (TREE_TYPE (arg)) == REAL_TYPE
4667 && (TYPE_PRECISION (TREE_TYPE (arg))
4668 < TYPE_PRECISION (double_type_node)))
4669 arg = convert_to_real (double_type_node, arg);
4670 else if (INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (arg)))
4671 arg = perform_integral_promotions (arg);
4673 arg = require_complete_type (arg);
4675 if (arg != error_mark_node
4676 && !pod_type_p (TREE_TYPE (arg)))
4678 /* Undefined behavior [expr.call] 5.2.2/7. We used to just warn
4679 here and do a bitwise copy, but now cp_expr_size will abort if we
4680 try to do that.
4681 If the call appears in the context of a sizeof expression,
4682 there is no need to emit a warning, since the expression won't be
4683 evaluated. We keep the builtin_trap just as a safety check. */
4684 if (!skip_evaluation)
4685 warning (0, "cannot pass objects of non-POD type %q#T through %<...%>; "
4686 "call will abort at runtime", TREE_TYPE (arg));
4687 arg = call_builtin_trap ();
4688 arg = build2 (COMPOUND_EXPR, integer_type_node, arg,
4689 integer_zero_node);
4692 return arg;
4695 /* va_arg (EXPR, TYPE) is a builtin. Make sure it is not abused. */
4697 tree
4698 build_x_va_arg (tree expr, tree type)
4700 if (processing_template_decl)
4701 return build_min (VA_ARG_EXPR, type, expr);
4703 type = complete_type_or_else (type, NULL_TREE);
4705 if (expr == error_mark_node || !type)
4706 return error_mark_node;
4708 if (! pod_type_p (type))
4710 /* Remove reference types so we don't ICE later on. */
4711 tree type1 = non_reference (type);
4712 /* Undefined behavior [expr.call] 5.2.2/7. */
4713 warning (0, "cannot receive objects of non-POD type %q#T through %<...%>; "
4714 "call will abort at runtime", type);
4715 expr = convert (build_pointer_type (type1), null_node);
4716 expr = build2 (COMPOUND_EXPR, TREE_TYPE (expr),
4717 call_builtin_trap (), expr);
4718 expr = cp_build_indirect_ref (expr, NULL, tf_warning_or_error);
4719 return expr;
4722 return build_va_arg (expr, type);
4725 /* TYPE has been given to va_arg. Apply the default conversions which
4726 would have happened when passed via ellipsis. Return the promoted
4727 type, or the passed type if there is no change. */
4729 tree
4730 cxx_type_promotes_to (tree type)
4732 tree promote;
4734 /* Perform the array-to-pointer and function-to-pointer
4735 conversions. */
4736 type = type_decays_to (type);
4738 promote = type_promotes_to (type);
4739 if (same_type_p (type, promote))
4740 promote = type;
4742 return promote;
4745 /* ARG is a default argument expression being passed to a parameter of
4746 the indicated TYPE, which is a parameter to FN. Do any required
4747 conversions. Return the converted value. */
4749 static GTY(()) VEC(tree,gc) *default_arg_context;
4751 tree
4752 convert_default_arg (tree type, tree arg, tree fn, int parmnum)
4754 int i;
4755 tree t;
4757 /* If the ARG is an unparsed default argument expression, the
4758 conversion cannot be performed. */
4759 if (TREE_CODE (arg) == DEFAULT_ARG)
4761 error ("the default argument for parameter %d of %qD has "
4762 "not yet been parsed",
4763 parmnum, fn);
4764 return error_mark_node;
4767 /* Detect recursion. */
4768 for (i = 0; VEC_iterate (tree, default_arg_context, i, t); ++i)
4769 if (t == fn)
4771 error ("recursive evaluation of default argument for %q#D", fn);
4772 return error_mark_node;
4774 VEC_safe_push (tree, gc, default_arg_context, fn);
4776 if (fn && DECL_TEMPLATE_INFO (fn))
4777 arg = tsubst_default_argument (fn, type, arg);
4779 arg = break_out_target_exprs (arg);
4781 if (TREE_CODE (arg) == CONSTRUCTOR)
4783 arg = digest_init (type, arg);
4784 arg = convert_for_initialization (0, type, arg, LOOKUP_NORMAL,
4785 "default argument", fn, parmnum,
4786 tf_warning_or_error);
4788 else
4790 /* We must make a copy of ARG, in case subsequent processing
4791 alters any part of it. For example, during gimplification a
4792 cast of the form (T) &X::f (where "f" is a member function)
4793 will lead to replacing the PTRMEM_CST for &X::f with a
4794 VAR_DECL. We can avoid the copy for constants, since they
4795 are never modified in place. */
4796 if (!CONSTANT_CLASS_P (arg))
4797 arg = unshare_expr (arg);
4798 arg = convert_for_initialization (0, type, arg, LOOKUP_NORMAL,
4799 "default argument", fn, parmnum,
4800 tf_warning_or_error);
4801 arg = convert_for_arg_passing (type, arg);
4804 VEC_pop (tree, default_arg_context);
4806 return arg;
4809 /* Returns the type which will really be used for passing an argument of
4810 type TYPE. */
4812 tree
4813 type_passed_as (tree type)
4815 /* Pass classes with copy ctors by invisible reference. */
4816 if (TREE_ADDRESSABLE (type))
4818 type = build_reference_type (type);
4819 /* There are no other pointers to this temporary. */
4820 type = build_qualified_type (type, TYPE_QUAL_RESTRICT);
4822 else if (targetm.calls.promote_prototypes (type)
4823 && INTEGRAL_TYPE_P (type)
4824 && COMPLETE_TYPE_P (type)
4825 && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
4826 TYPE_SIZE (integer_type_node)))
4827 type = integer_type_node;
4829 return type;
4832 /* Actually perform the appropriate conversion. */
4834 tree
4835 convert_for_arg_passing (tree type, tree val)
4837 tree bitfield_type;
4839 /* If VAL is a bitfield, then -- since it has already been converted
4840 to TYPE -- it cannot have a precision greater than TYPE.
4842 If it has a smaller precision, we must widen it here. For
4843 example, passing "int f:3;" to a function expecting an "int" will
4844 not result in any conversion before this point.
4846 If the precision is the same we must not risk widening. For
4847 example, the COMPONENT_REF for a 32-bit "long long" bitfield will
4848 often have type "int", even though the C++ type for the field is
4849 "long long". If the value is being passed to a function
4850 expecting an "int", then no conversions will be required. But,
4851 if we call convert_bitfield_to_declared_type, the bitfield will
4852 be converted to "long long". */
4853 bitfield_type = is_bitfield_expr_with_lowered_type (val);
4854 if (bitfield_type
4855 && TYPE_PRECISION (TREE_TYPE (val)) < TYPE_PRECISION (type))
4856 val = convert_to_integer (TYPE_MAIN_VARIANT (bitfield_type), val);
4858 if (val == error_mark_node)
4860 /* Pass classes with copy ctors by invisible reference. */
4861 else if (TREE_ADDRESSABLE (type))
4862 val = build1 (ADDR_EXPR, build_reference_type (type), val);
4863 else if (targetm.calls.promote_prototypes (type)
4864 && INTEGRAL_TYPE_P (type)
4865 && COMPLETE_TYPE_P (type)
4866 && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
4867 TYPE_SIZE (integer_type_node)))
4868 val = perform_integral_promotions (val);
4869 if (warn_missing_format_attribute)
4871 tree rhstype = TREE_TYPE (val);
4872 const enum tree_code coder = TREE_CODE (rhstype);
4873 const enum tree_code codel = TREE_CODE (type);
4874 if ((codel == POINTER_TYPE || codel == REFERENCE_TYPE)
4875 && coder == codel
4876 && check_missing_format_attribute (type, rhstype))
4877 warning (OPT_Wmissing_format_attribute,
4878 "argument of function call might be a candidate for a format attribute");
4880 return val;
4883 /* Returns true iff FN is a function with magic varargs, i.e. ones for
4884 which no conversions at all should be done. This is true for some
4885 builtins which don't act like normal functions. */
4887 static bool
4888 magic_varargs_p (tree fn)
4890 if (DECL_BUILT_IN (fn))
4891 switch (DECL_FUNCTION_CODE (fn))
4893 case BUILT_IN_CLASSIFY_TYPE:
4894 case BUILT_IN_CONSTANT_P:
4895 case BUILT_IN_NEXT_ARG:
4896 case BUILT_IN_VA_START:
4897 return true;
4899 default:;
4900 return lookup_attribute ("type generic",
4901 TYPE_ATTRIBUTES (TREE_TYPE (fn))) != 0;
4904 return false;
4907 /* Subroutine of the various build_*_call functions. Overload resolution
4908 has chosen a winning candidate CAND; build up a CALL_EXPR accordingly.
4909 ARGS is a TREE_LIST of the unconverted arguments to the call. FLAGS is a
4910 bitmask of various LOOKUP_* flags which apply to the call itself. */
4912 static tree
4913 build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
4915 tree fn = cand->fn;
4916 tree args = cand->args;
4917 conversion **convs = cand->convs;
4918 conversion *conv;
4919 tree parm = TYPE_ARG_TYPES (TREE_TYPE (fn));
4920 int parmlen;
4921 tree arg, val;
4922 int i = 0;
4923 int j = 0;
4924 int is_method = 0;
4925 int nargs;
4926 tree *argarray;
4928 /* In a template, there is no need to perform all of the work that
4929 is normally done. We are only interested in the type of the call
4930 expression, i.e., the return type of the function. Any semantic
4931 errors will be deferred until the template is instantiated. */
4932 if (processing_template_decl)
4934 tree expr;
4935 tree return_type;
4936 return_type = TREE_TYPE (TREE_TYPE (fn));
4937 expr = build_call_list (return_type, fn, args);
4938 if (TREE_THIS_VOLATILE (fn) && cfun)
4939 current_function_returns_abnormally = 1;
4940 if (!VOID_TYPE_P (return_type))
4941 require_complete_type (return_type);
4942 return convert_from_reference (expr);
4945 /* Give any warnings we noticed during overload resolution. */
4946 if (cand->warnings)
4948 struct candidate_warning *w;
4949 for (w = cand->warnings; w; w = w->next)
4950 joust (cand, w->loser, 1);
4953 if (DECL_FUNCTION_MEMBER_P (fn))
4955 /* If FN is a template function, two cases must be considered.
4956 For example:
4958 struct A {
4959 protected:
4960 template <class T> void f();
4962 template <class T> struct B {
4963 protected:
4964 void g();
4966 struct C : A, B<int> {
4967 using A::f; // #1
4968 using B<int>::g; // #2
4971 In case #1 where `A::f' is a member template, DECL_ACCESS is
4972 recorded in the primary template but not in its specialization.
4973 We check access of FN using its primary template.
4975 In case #2, where `B<int>::g' has a DECL_TEMPLATE_INFO simply
4976 because it is a member of class template B, DECL_ACCESS is
4977 recorded in the specialization `B<int>::g'. We cannot use its
4978 primary template because `B<T>::g' and `B<int>::g' may have
4979 different access. */
4980 if (DECL_TEMPLATE_INFO (fn)
4981 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (fn)))
4982 perform_or_defer_access_check (cand->access_path,
4983 DECL_TI_TEMPLATE (fn), fn);
4984 else
4985 perform_or_defer_access_check (cand->access_path, fn, fn);
4988 if (args && TREE_CODE (args) != TREE_LIST)
4989 args = build_tree_list (NULL_TREE, args);
4990 arg = args;
4992 /* Find maximum size of vector to hold converted arguments. */
4993 parmlen = list_length (parm);
4994 nargs = list_length (args);
4995 if (parmlen > nargs)
4996 nargs = parmlen;
4997 argarray = (tree *) alloca (nargs * sizeof (tree));
4999 /* The implicit parameters to a constructor are not considered by overload
5000 resolution, and must be of the proper type. */
5001 if (DECL_CONSTRUCTOR_P (fn))
5003 argarray[j++] = TREE_VALUE (arg);
5004 arg = TREE_CHAIN (arg);
5005 parm = TREE_CHAIN (parm);
5006 /* We should never try to call the abstract constructor. */
5007 gcc_assert (!DECL_HAS_IN_CHARGE_PARM_P (fn));
5009 if (DECL_HAS_VTT_PARM_P (fn))
5011 argarray[j++] = TREE_VALUE (arg);
5012 arg = TREE_CHAIN (arg);
5013 parm = TREE_CHAIN (parm);
5016 /* Bypass access control for 'this' parameter. */
5017 else if (TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE)
5019 tree parmtype = TREE_VALUE (parm);
5020 tree argtype = TREE_TYPE (TREE_VALUE (arg));
5021 tree converted_arg;
5022 tree base_binfo;
5024 if (convs[i]->bad_p)
5026 if (complain & tf_error)
5027 permerror ("passing %qT as %<this%> argument of %q#D discards qualifiers",
5028 TREE_TYPE (argtype), fn);
5029 else
5030 return error_mark_node;
5033 /* [class.mfct.nonstatic]: If a nonstatic member function of a class
5034 X is called for an object that is not of type X, or of a type
5035 derived from X, the behavior is undefined.
5037 So we can assume that anything passed as 'this' is non-null, and
5038 optimize accordingly. */
5039 gcc_assert (TREE_CODE (parmtype) == POINTER_TYPE);
5040 /* Convert to the base in which the function was declared. */
5041 gcc_assert (cand->conversion_path != NULL_TREE);
5042 converted_arg = build_base_path (PLUS_EXPR,
5043 TREE_VALUE (arg),
5044 cand->conversion_path,
5046 /* Check that the base class is accessible. */
5047 if (!accessible_base_p (TREE_TYPE (argtype),
5048 BINFO_TYPE (cand->conversion_path), true))
5049 error ("%qT is not an accessible base of %qT",
5050 BINFO_TYPE (cand->conversion_path),
5051 TREE_TYPE (argtype));
5052 /* If fn was found by a using declaration, the conversion path
5053 will be to the derived class, not the base declaring fn. We
5054 must convert from derived to base. */
5055 base_binfo = lookup_base (TREE_TYPE (TREE_TYPE (converted_arg)),
5056 TREE_TYPE (parmtype), ba_unique, NULL);
5057 converted_arg = build_base_path (PLUS_EXPR, converted_arg,
5058 base_binfo, 1);
5060 argarray[j++] = converted_arg;
5061 parm = TREE_CHAIN (parm);
5062 arg = TREE_CHAIN (arg);
5063 ++i;
5064 is_method = 1;
5067 for (; arg && parm;
5068 parm = TREE_CHAIN (parm), arg = TREE_CHAIN (arg), ++i)
5070 tree type = TREE_VALUE (parm);
5072 conv = convs[i];
5074 /* Don't make a copy here if build_call is going to. */
5075 if (conv->kind == ck_rvalue
5076 && COMPLETE_TYPE_P (complete_type (type))
5077 && !TREE_ADDRESSABLE (type))
5078 conv = conv->u.next;
5080 val = convert_like_with_context
5081 (conv, TREE_VALUE (arg), fn, i - is_method, complain);
5083 val = convert_for_arg_passing (type, val);
5084 if ((complain == tf_none) && val == error_mark_node)
5085 return error_mark_node;
5086 else
5087 argarray[j++] = val;
5090 /* Default arguments */
5091 for (; parm && parm != void_list_node; parm = TREE_CHAIN (parm), i++)
5092 argarray[j++] = convert_default_arg (TREE_VALUE (parm),
5093 TREE_PURPOSE (parm),
5094 fn, i - is_method);
5095 /* Ellipsis */
5096 for (; arg; arg = TREE_CHAIN (arg))
5098 tree a = TREE_VALUE (arg);
5099 if (magic_varargs_p (fn))
5100 /* Do no conversions for magic varargs. */;
5101 else
5102 a = convert_arg_to_ellipsis (a);
5103 argarray[j++] = a;
5106 gcc_assert (j <= nargs);
5107 nargs = j;
5109 check_function_arguments (TYPE_ATTRIBUTES (TREE_TYPE (fn)),
5110 nargs, argarray, TYPE_ARG_TYPES (TREE_TYPE (fn)));
5112 /* Avoid actually calling copy constructors and copy assignment operators,
5113 if possible. */
5115 if (! flag_elide_constructors)
5116 /* Do things the hard way. */;
5117 else if (cand->num_convs == 1
5118 && (DECL_COPY_CONSTRUCTOR_P (fn)
5119 || DECL_MOVE_CONSTRUCTOR_P (fn)))
5121 tree targ;
5122 arg = argarray[num_artificial_parms_for (fn)];
5124 /* Pull out the real argument, disregarding const-correctness. */
5125 targ = arg;
5126 while (CONVERT_EXPR_P (targ)
5127 || TREE_CODE (targ) == NON_LVALUE_EXPR)
5128 targ = TREE_OPERAND (targ, 0);
5129 if (TREE_CODE (targ) == ADDR_EXPR)
5131 targ = TREE_OPERAND (targ, 0);
5132 if (!same_type_ignoring_top_level_qualifiers_p
5133 (TREE_TYPE (TREE_TYPE (arg)), TREE_TYPE (targ)))
5134 targ = NULL_TREE;
5136 else
5137 targ = NULL_TREE;
5139 if (targ)
5140 arg = targ;
5141 else
5142 arg = cp_build_indirect_ref (arg, 0, complain);
5144 /* [class.copy]: the copy constructor is implicitly defined even if
5145 the implementation elided its use. */
5146 if (TYPE_HAS_COMPLEX_INIT_REF (DECL_CONTEXT (fn)))
5147 mark_used (fn);
5149 /* If we're creating a temp and we already have one, don't create a
5150 new one. If we're not creating a temp but we get one, use
5151 INIT_EXPR to collapse the temp into our target. Otherwise, if the
5152 ctor is trivial, do a bitwise copy with a simple TARGET_EXPR for a
5153 temp or an INIT_EXPR otherwise. */
5154 if (integer_zerop (TREE_VALUE (args)))
5156 if (TREE_CODE (arg) == TARGET_EXPR)
5157 return arg;
5158 else if (TYPE_HAS_TRIVIAL_INIT_REF (DECL_CONTEXT (fn)))
5159 return build_target_expr_with_type (arg, DECL_CONTEXT (fn));
5161 else if (TREE_CODE (arg) == TARGET_EXPR
5162 || (TYPE_HAS_TRIVIAL_INIT_REF (DECL_CONTEXT (fn))
5163 && !move_fn_p (fn)))
5165 tree to = stabilize_reference
5166 (cp_build_indirect_ref (TREE_VALUE (args), 0, complain));
5168 val = build2 (INIT_EXPR, DECL_CONTEXT (fn), to, arg);
5169 return val;
5172 else if (DECL_OVERLOADED_OPERATOR_P (fn) == NOP_EXPR
5173 && copy_fn_p (fn)
5174 && TYPE_HAS_TRIVIAL_ASSIGN_REF (DECL_CONTEXT (fn)))
5176 tree to = stabilize_reference
5177 (cp_build_indirect_ref (argarray[0], 0, complain));
5178 tree type = TREE_TYPE (to);
5179 tree as_base = CLASSTYPE_AS_BASE (type);
5181 arg = argarray[1];
5182 if (tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (as_base)))
5184 arg = cp_build_indirect_ref (arg, 0, complain);
5185 val = build2 (MODIFY_EXPR, TREE_TYPE (to), to, arg);
5187 else
5189 /* We must only copy the non-tail padding parts.
5190 Use __builtin_memcpy for the bitwise copy. */
5192 tree arg0, arg1, arg2, t;
5194 arg2 = TYPE_SIZE_UNIT (as_base);
5195 arg1 = arg;
5196 arg0 = cp_build_unary_op (ADDR_EXPR, to, 0, complain);
5197 t = implicit_built_in_decls[BUILT_IN_MEMCPY];
5198 t = build_call_n (t, 3, arg0, arg1, arg2);
5200 t = convert (TREE_TYPE (arg0), t);
5201 val = cp_build_indirect_ref (t, 0, complain);
5204 return val;
5207 mark_used (fn);
5209 if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0)
5211 tree t;
5212 tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (argarray[0])),
5213 DECL_CONTEXT (fn),
5214 ba_any, NULL);
5215 gcc_assert (binfo && binfo != error_mark_node);
5217 /* Warn about deprecated virtual functions now, since we're about
5218 to throw away the decl. */
5219 if (TREE_DEPRECATED (fn))
5220 warn_deprecated_use (fn);
5222 argarray[0] = build_base_path (PLUS_EXPR, argarray[0], binfo, 1);
5223 if (TREE_SIDE_EFFECTS (argarray[0]))
5224 argarray[0] = save_expr (argarray[0]);
5225 t = build_pointer_type (TREE_TYPE (fn));
5226 if (DECL_CONTEXT (fn) && TYPE_JAVA_INTERFACE (DECL_CONTEXT (fn)))
5227 fn = build_java_interface_fn_ref (fn, argarray[0]);
5228 else
5229 fn = build_vfn_ref (argarray[0], DECL_VINDEX (fn));
5230 TREE_TYPE (fn) = t;
5232 else if (DECL_INLINE (fn))
5233 fn = inline_conversion (fn);
5234 else
5235 fn = build_addr_func (fn);
5237 return build_cxx_call (fn, nargs, argarray);
5240 /* Build and return a call to FN, using NARGS arguments in ARGARRAY.
5241 This function performs no overload resolution, conversion, or other
5242 high-level operations. */
5244 tree
5245 build_cxx_call (tree fn, int nargs, tree *argarray)
5247 tree fndecl;
5249 fn = build_call_a (fn, nargs, argarray);
5251 /* If this call might throw an exception, note that fact. */
5252 fndecl = get_callee_fndecl (fn);
5253 if ((!fndecl || !TREE_NOTHROW (fndecl))
5254 && at_function_scope_p ()
5255 && cfun)
5256 cp_function_chain->can_throw = 1;
5258 /* Some built-in function calls will be evaluated at compile-time in
5259 fold (). */
5260 fn = fold_if_not_in_template (fn);
5262 if (VOID_TYPE_P (TREE_TYPE (fn)))
5263 return fn;
5265 fn = require_complete_type (fn);
5266 if (fn == error_mark_node)
5267 return error_mark_node;
5269 if (MAYBE_CLASS_TYPE_P (TREE_TYPE (fn)))
5270 fn = build_cplus_new (TREE_TYPE (fn), fn);
5271 return convert_from_reference (fn);
5274 static GTY(()) tree java_iface_lookup_fn;
5276 /* Make an expression which yields the address of the Java interface
5277 method FN. This is achieved by generating a call to libjava's
5278 _Jv_LookupInterfaceMethodIdx(). */
5280 static tree
5281 build_java_interface_fn_ref (tree fn, tree instance)
5283 tree lookup_fn, method, idx;
5284 tree klass_ref, iface, iface_ref;
5285 int i;
5287 if (!java_iface_lookup_fn)
5289 tree endlink = build_void_list_node ();
5290 tree t = tree_cons (NULL_TREE, ptr_type_node,
5291 tree_cons (NULL_TREE, ptr_type_node,
5292 tree_cons (NULL_TREE, java_int_type_node,
5293 endlink)));
5294 java_iface_lookup_fn
5295 = add_builtin_function ("_Jv_LookupInterfaceMethodIdx",
5296 build_function_type (ptr_type_node, t),
5297 0, NOT_BUILT_IN, NULL, NULL_TREE);
5300 /* Look up the pointer to the runtime java.lang.Class object for `instance'.
5301 This is the first entry in the vtable. */
5302 klass_ref = build_vtbl_ref (cp_build_indirect_ref (instance, 0,
5303 tf_warning_or_error),
5304 integer_zero_node);
5306 /* Get the java.lang.Class pointer for the interface being called. */
5307 iface = DECL_CONTEXT (fn);
5308 iface_ref = lookup_field (iface, get_identifier ("class$"), 0, false);
5309 if (!iface_ref || TREE_CODE (iface_ref) != VAR_DECL
5310 || DECL_CONTEXT (iface_ref) != iface)
5312 error ("could not find class$ field in java interface type %qT",
5313 iface);
5314 return error_mark_node;
5316 iface_ref = build_address (iface_ref);
5317 iface_ref = convert (build_pointer_type (iface), iface_ref);
5319 /* Determine the itable index of FN. */
5320 i = 1;
5321 for (method = TYPE_METHODS (iface); method; method = TREE_CHAIN (method))
5323 if (!DECL_VIRTUAL_P (method))
5324 continue;
5325 if (fn == method)
5326 break;
5327 i++;
5329 idx = build_int_cst (NULL_TREE, i);
5331 lookup_fn = build1 (ADDR_EXPR,
5332 build_pointer_type (TREE_TYPE (java_iface_lookup_fn)),
5333 java_iface_lookup_fn);
5334 return build_call_nary (ptr_type_node, lookup_fn,
5335 3, klass_ref, iface_ref, idx);
5338 /* Returns the value to use for the in-charge parameter when making a
5339 call to a function with the indicated NAME.
5341 FIXME:Can't we find a neater way to do this mapping? */
5343 tree
5344 in_charge_arg_for_name (tree name)
5346 if (name == base_ctor_identifier
5347 || name == base_dtor_identifier)
5348 return integer_zero_node;
5349 else if (name == complete_ctor_identifier)
5350 return integer_one_node;
5351 else if (name == complete_dtor_identifier)
5352 return integer_two_node;
5353 else if (name == deleting_dtor_identifier)
5354 return integer_three_node;
5356 /* This function should only be called with one of the names listed
5357 above. */
5358 gcc_unreachable ();
5359 return NULL_TREE;
5362 /* Build a call to a constructor, destructor, or an assignment
5363 operator for INSTANCE, an expression with class type. NAME
5364 indicates the special member function to call; ARGS are the
5365 arguments. BINFO indicates the base of INSTANCE that is to be
5366 passed as the `this' parameter to the member function called.
5368 FLAGS are the LOOKUP_* flags to use when processing the call.
5370 If NAME indicates a complete object constructor, INSTANCE may be
5371 NULL_TREE. In this case, the caller will call build_cplus_new to
5372 store the newly constructed object into a VAR_DECL. */
5374 tree
5375 build_special_member_call (tree instance, tree name, tree args,
5376 tree binfo, int flags, tsubst_flags_t complain)
5378 tree fns;
5379 /* The type of the subobject to be constructed or destroyed. */
5380 tree class_type;
5382 gcc_assert (name == complete_ctor_identifier
5383 || name == base_ctor_identifier
5384 || name == complete_dtor_identifier
5385 || name == base_dtor_identifier
5386 || name == deleting_dtor_identifier
5387 || name == ansi_assopname (NOP_EXPR));
5388 if (TYPE_P (binfo))
5390 /* Resolve the name. */
5391 if (!complete_type_or_else (binfo, NULL_TREE))
5392 return error_mark_node;
5394 binfo = TYPE_BINFO (binfo);
5397 gcc_assert (binfo != NULL_TREE);
5399 class_type = BINFO_TYPE (binfo);
5401 /* Handle the special case where INSTANCE is NULL_TREE. */
5402 if (name == complete_ctor_identifier && !instance)
5404 instance = build_int_cst (build_pointer_type (class_type), 0);
5405 instance = build1 (INDIRECT_REF, class_type, instance);
5407 else
5409 if (name == complete_dtor_identifier
5410 || name == base_dtor_identifier
5411 || name == deleting_dtor_identifier)
5412 gcc_assert (args == NULL_TREE);
5414 /* Convert to the base class, if necessary. */
5415 if (!same_type_ignoring_top_level_qualifiers_p
5416 (TREE_TYPE (instance), BINFO_TYPE (binfo)))
5418 if (name != ansi_assopname (NOP_EXPR))
5419 /* For constructors and destructors, either the base is
5420 non-virtual, or it is virtual but we are doing the
5421 conversion from a constructor or destructor for the
5422 complete object. In either case, we can convert
5423 statically. */
5424 instance = convert_to_base_statically (instance, binfo);
5425 else
5426 /* However, for assignment operators, we must convert
5427 dynamically if the base is virtual. */
5428 instance = build_base_path (PLUS_EXPR, instance,
5429 binfo, /*nonnull=*/1);
5433 gcc_assert (instance != NULL_TREE);
5435 fns = lookup_fnfields (binfo, name, 1);
5437 /* When making a call to a constructor or destructor for a subobject
5438 that uses virtual base classes, pass down a pointer to a VTT for
5439 the subobject. */
5440 if ((name == base_ctor_identifier
5441 || name == base_dtor_identifier)
5442 && CLASSTYPE_VBASECLASSES (class_type))
5444 tree vtt;
5445 tree sub_vtt;
5447 /* If the current function is a complete object constructor
5448 or destructor, then we fetch the VTT directly.
5449 Otherwise, we look it up using the VTT we were given. */
5450 vtt = TREE_CHAIN (CLASSTYPE_VTABLES (current_class_type));
5451 vtt = decay_conversion (vtt);
5452 vtt = build3 (COND_EXPR, TREE_TYPE (vtt),
5453 build2 (EQ_EXPR, boolean_type_node,
5454 current_in_charge_parm, integer_zero_node),
5455 current_vtt_parm,
5456 vtt);
5457 gcc_assert (BINFO_SUBVTT_INDEX (binfo));
5458 sub_vtt = build2 (POINTER_PLUS_EXPR, TREE_TYPE (vtt), vtt,
5459 BINFO_SUBVTT_INDEX (binfo));
5461 args = tree_cons (NULL_TREE, sub_vtt, args);
5464 return build_new_method_call (instance, fns, args,
5465 TYPE_BINFO (BINFO_TYPE (binfo)),
5466 flags, /*fn=*/NULL,
5467 complain);
5470 /* Return the NAME, as a C string. The NAME indicates a function that
5471 is a member of TYPE. *FREE_P is set to true if the caller must
5472 free the memory returned.
5474 Rather than go through all of this, we should simply set the names
5475 of constructors and destructors appropriately, and dispense with
5476 ctor_identifier, dtor_identifier, etc. */
5478 static char *
5479 name_as_c_string (tree name, tree type, bool *free_p)
5481 char *pretty_name;
5483 /* Assume that we will not allocate memory. */
5484 *free_p = false;
5485 /* Constructors and destructors are special. */
5486 if (IDENTIFIER_CTOR_OR_DTOR_P (name))
5488 pretty_name
5489 = CONST_CAST (char *, IDENTIFIER_POINTER (constructor_name (type)));
5490 /* For a destructor, add the '~'. */
5491 if (name == complete_dtor_identifier
5492 || name == base_dtor_identifier
5493 || name == deleting_dtor_identifier)
5495 pretty_name = concat ("~", pretty_name, NULL);
5496 /* Remember that we need to free the memory allocated. */
5497 *free_p = true;
5500 else if (IDENTIFIER_TYPENAME_P (name))
5502 pretty_name = concat ("operator ",
5503 type_as_string (TREE_TYPE (name),
5504 TFF_PLAIN_IDENTIFIER),
5505 NULL);
5506 /* Remember that we need to free the memory allocated. */
5507 *free_p = true;
5509 else
5510 pretty_name = CONST_CAST (char *, IDENTIFIER_POINTER (name));
5512 return pretty_name;
5515 /* Build a call to "INSTANCE.FN (ARGS)". If FN_P is non-NULL, it will
5516 be set, upon return, to the function called. */
5518 tree
5519 build_new_method_call (tree instance, tree fns, tree args,
5520 tree conversion_path, int flags,
5521 tree *fn_p, tsubst_flags_t complain)
5523 struct z_candidate *candidates = 0, *cand;
5524 tree explicit_targs = NULL_TREE;
5525 tree basetype = NULL_TREE;
5526 tree access_binfo;
5527 tree optype;
5528 tree mem_args = NULL_TREE, instance_ptr;
5529 tree name;
5530 tree user_args;
5531 tree call;
5532 tree fn;
5533 tree class_type;
5534 int template_only = 0;
5535 bool any_viable_p;
5536 tree orig_instance;
5537 tree orig_fns;
5538 tree orig_args;
5539 void *p;
5541 gcc_assert (instance != NULL_TREE);
5543 /* We don't know what function we're going to call, yet. */
5544 if (fn_p)
5545 *fn_p = NULL_TREE;
5547 if (error_operand_p (instance)
5548 || error_operand_p (fns)
5549 || args == error_mark_node)
5550 return error_mark_node;
5552 if (!BASELINK_P (fns))
5554 if (complain & tf_error)
5555 error ("call to non-function %qD", fns);
5556 return error_mark_node;
5559 orig_instance = instance;
5560 orig_fns = fns;
5561 orig_args = args;
5563 /* Dismantle the baselink to collect all the information we need. */
5564 if (!conversion_path)
5565 conversion_path = BASELINK_BINFO (fns);
5566 access_binfo = BASELINK_ACCESS_BINFO (fns);
5567 optype = BASELINK_OPTYPE (fns);
5568 fns = BASELINK_FUNCTIONS (fns);
5569 if (TREE_CODE (fns) == TEMPLATE_ID_EXPR)
5571 explicit_targs = TREE_OPERAND (fns, 1);
5572 fns = TREE_OPERAND (fns, 0);
5573 template_only = 1;
5575 gcc_assert (TREE_CODE (fns) == FUNCTION_DECL
5576 || TREE_CODE (fns) == TEMPLATE_DECL
5577 || TREE_CODE (fns) == OVERLOAD);
5578 fn = get_first_fn (fns);
5579 name = DECL_NAME (fn);
5581 basetype = TYPE_MAIN_VARIANT (TREE_TYPE (instance));
5582 gcc_assert (CLASS_TYPE_P (basetype));
5584 if (processing_template_decl)
5586 instance = build_non_dependent_expr (instance);
5587 args = build_non_dependent_args (orig_args);
5590 /* The USER_ARGS are the arguments we will display to users if an
5591 error occurs. The USER_ARGS should not include any
5592 compiler-generated arguments. The "this" pointer hasn't been
5593 added yet. However, we must remove the VTT pointer if this is a
5594 call to a base-class constructor or destructor. */
5595 user_args = args;
5596 if (IDENTIFIER_CTOR_OR_DTOR_P (name))
5598 /* Callers should explicitly indicate whether they want to construct
5599 the complete object or just the part without virtual bases. */
5600 gcc_assert (name != ctor_identifier);
5601 /* Similarly for destructors. */
5602 gcc_assert (name != dtor_identifier);
5603 /* Remove the VTT pointer, if present. */
5604 if ((name == base_ctor_identifier || name == base_dtor_identifier)
5605 && CLASSTYPE_VBASECLASSES (basetype))
5606 user_args = TREE_CHAIN (user_args);
5609 /* Process the argument list. */
5610 args = resolve_args (args);
5611 if (args == error_mark_node)
5612 return error_mark_node;
5614 instance_ptr = build_this (instance);
5616 /* It's OK to call destructors and constructors on cv-qualified objects.
5617 Therefore, convert the INSTANCE_PTR to the unqualified type, if
5618 necessary. */
5619 if (DECL_DESTRUCTOR_P (fn)
5620 || DECL_CONSTRUCTOR_P (fn))
5622 tree type = build_pointer_type (basetype);
5623 if (!same_type_p (type, TREE_TYPE (instance_ptr)))
5624 instance_ptr = build_nop (type, instance_ptr);
5626 if (DECL_DESTRUCTOR_P (fn))
5627 name = complete_dtor_identifier;
5629 class_type = (conversion_path ? BINFO_TYPE (conversion_path) : NULL_TREE);
5630 mem_args = tree_cons (NULL_TREE, instance_ptr, args);
5632 /* Get the high-water mark for the CONVERSION_OBSTACK. */
5633 p = conversion_obstack_alloc (0);
5635 for (fn = fns; fn; fn = OVL_NEXT (fn))
5637 tree t = OVL_CURRENT (fn);
5638 tree this_arglist;
5640 /* We can end up here for copy-init of same or base class. */
5641 if ((flags & LOOKUP_ONLYCONVERTING)
5642 && DECL_NONCONVERTING_P (t))
5643 continue;
5645 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (t))
5646 this_arglist = mem_args;
5647 else
5648 this_arglist = args;
5650 if (TREE_CODE (t) == TEMPLATE_DECL)
5651 /* A member template. */
5652 add_template_candidate (&candidates, t,
5653 class_type,
5654 explicit_targs,
5655 this_arglist, optype,
5656 access_binfo,
5657 conversion_path,
5658 flags,
5659 DEDUCE_CALL);
5660 else if (! template_only)
5661 add_function_candidate (&candidates, t,
5662 class_type,
5663 this_arglist,
5664 access_binfo,
5665 conversion_path,
5666 flags);
5669 candidates = splice_viable (candidates, pedantic, &any_viable_p);
5670 if (!any_viable_p)
5672 if (complain & tf_error)
5674 if (!COMPLETE_TYPE_P (basetype))
5675 cxx_incomplete_type_error (instance_ptr, basetype);
5676 else
5678 char *pretty_name;
5679 bool free_p;
5681 pretty_name = name_as_c_string (name, basetype, &free_p);
5682 error ("no matching function for call to %<%T::%s(%A)%#V%>",
5683 basetype, pretty_name, user_args,
5684 TREE_TYPE (TREE_TYPE (instance_ptr)));
5685 if (free_p)
5686 free (pretty_name);
5688 print_z_candidates (candidates);
5690 call = error_mark_node;
5692 else
5694 cand = tourney (candidates);
5695 if (cand == 0)
5697 char *pretty_name;
5698 bool free_p;
5700 if (complain & tf_error)
5702 pretty_name = name_as_c_string (name, basetype, &free_p);
5703 error ("call of overloaded %<%s(%A)%> is ambiguous", pretty_name,
5704 user_args);
5705 print_z_candidates (candidates);
5706 if (free_p)
5707 free (pretty_name);
5709 call = error_mark_node;
5711 else
5713 fn = cand->fn;
5715 if (!(flags & LOOKUP_NONVIRTUAL)
5716 && DECL_PURE_VIRTUAL_P (fn)
5717 && instance == current_class_ref
5718 && (DECL_CONSTRUCTOR_P (current_function_decl)
5719 || DECL_DESTRUCTOR_P (current_function_decl))
5720 && (complain & tf_warning))
5721 /* This is not an error, it is runtime undefined
5722 behavior. */
5723 warning (0, (DECL_CONSTRUCTOR_P (current_function_decl) ?
5724 "abstract virtual %q#D called from constructor"
5725 : "abstract virtual %q#D called from destructor"),
5726 fn);
5728 if (TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE
5729 && is_dummy_object (instance_ptr))
5731 if (complain & tf_error)
5732 error ("cannot call member function %qD without object",
5733 fn);
5734 call = error_mark_node;
5736 else
5738 if (DECL_VINDEX (fn) && ! (flags & LOOKUP_NONVIRTUAL)
5739 && resolves_to_fixed_type_p (instance, 0))
5740 flags |= LOOKUP_NONVIRTUAL;
5741 /* Now we know what function is being called. */
5742 if (fn_p)
5743 *fn_p = fn;
5744 /* Build the actual CALL_EXPR. */
5745 call = build_over_call (cand, flags, complain);
5746 /* In an expression of the form `a->f()' where `f' turns
5747 out to be a static member function, `a' is
5748 none-the-less evaluated. */
5749 if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE
5750 && !is_dummy_object (instance_ptr)
5751 && TREE_SIDE_EFFECTS (instance_ptr))
5752 call = build2 (COMPOUND_EXPR, TREE_TYPE (call),
5753 instance_ptr, call);
5754 else if (call != error_mark_node
5755 && DECL_DESTRUCTOR_P (cand->fn)
5756 && !VOID_TYPE_P (TREE_TYPE (call)))
5757 /* An explicit call of the form "x->~X()" has type
5758 "void". However, on platforms where destructors
5759 return "this" (i.e., those where
5760 targetm.cxx.cdtor_returns_this is true), such calls
5761 will appear to have a return value of pointer type
5762 to the low-level call machinery. We do not want to
5763 change the low-level machinery, since we want to be
5764 able to optimize "delete f()" on such platforms as
5765 "operator delete(~X(f()))" (rather than generating
5766 "t = f(), ~X(t), operator delete (t)"). */
5767 call = build_nop (void_type_node, call);
5772 if (processing_template_decl && call != error_mark_node)
5773 call = (build_min_non_dep_call_list
5774 (call,
5775 build_min_nt (COMPONENT_REF, orig_instance, orig_fns, NULL_TREE),
5776 orig_args));
5778 /* Free all the conversions we allocated. */
5779 obstack_free (&conversion_obstack, p);
5781 return call;
5784 /* Returns true iff standard conversion sequence ICS1 is a proper
5785 subsequence of ICS2. */
5787 static bool
5788 is_subseq (conversion *ics1, conversion *ics2)
5790 /* We can assume that a conversion of the same code
5791 between the same types indicates a subsequence since we only get
5792 here if the types we are converting from are the same. */
5794 while (ics1->kind == ck_rvalue
5795 || ics1->kind == ck_lvalue)
5796 ics1 = ics1->u.next;
5798 while (1)
5800 while (ics2->kind == ck_rvalue
5801 || ics2->kind == ck_lvalue)
5802 ics2 = ics2->u.next;
5804 if (ics2->kind == ck_user
5805 || ics2->kind == ck_ambig
5806 || ics2->kind == ck_identity)
5807 /* At this point, ICS1 cannot be a proper subsequence of
5808 ICS2. We can get a USER_CONV when we are comparing the
5809 second standard conversion sequence of two user conversion
5810 sequences. */
5811 return false;
5813 ics2 = ics2->u.next;
5815 if (ics2->kind == ics1->kind
5816 && same_type_p (ics2->type, ics1->type)
5817 && same_type_p (ics2->u.next->type,
5818 ics1->u.next->type))
5819 return true;
5823 /* Returns nonzero iff DERIVED is derived from BASE. The inputs may
5824 be any _TYPE nodes. */
5826 bool
5827 is_properly_derived_from (tree derived, tree base)
5829 if (!CLASS_TYPE_P (derived) || !CLASS_TYPE_P (base))
5830 return false;
5832 /* We only allow proper derivation here. The DERIVED_FROM_P macro
5833 considers every class derived from itself. */
5834 return (!same_type_ignoring_top_level_qualifiers_p (derived, base)
5835 && DERIVED_FROM_P (base, derived));
5838 /* We build the ICS for an implicit object parameter as a pointer
5839 conversion sequence. However, such a sequence should be compared
5840 as if it were a reference conversion sequence. If ICS is the
5841 implicit conversion sequence for an implicit object parameter,
5842 modify it accordingly. */
5844 static void
5845 maybe_handle_implicit_object (conversion **ics)
5847 if ((*ics)->this_p)
5849 /* [over.match.funcs]
5851 For non-static member functions, the type of the
5852 implicit object parameter is "reference to cv X"
5853 where X is the class of which the function is a
5854 member and cv is the cv-qualification on the member
5855 function declaration. */
5856 conversion *t = *ics;
5857 tree reference_type;
5859 /* The `this' parameter is a pointer to a class type. Make the
5860 implicit conversion talk about a reference to that same class
5861 type. */
5862 reference_type = TREE_TYPE (t->type);
5863 reference_type = build_reference_type (reference_type);
5865 if (t->kind == ck_qual)
5866 t = t->u.next;
5867 if (t->kind == ck_ptr)
5868 t = t->u.next;
5869 t = build_identity_conv (TREE_TYPE (t->type), NULL_TREE);
5870 t = direct_reference_binding (reference_type, t);
5871 t->this_p = 1;
5872 t->rvaluedness_matches_p = 0;
5873 *ics = t;
5877 /* If *ICS is a REF_BIND set *ICS to the remainder of the conversion,
5878 and return the initial reference binding conversion. Otherwise,
5879 leave *ICS unchanged and return NULL. */
5881 static conversion *
5882 maybe_handle_ref_bind (conversion **ics)
5884 if ((*ics)->kind == ck_ref_bind)
5886 conversion *old_ics = *ics;
5887 *ics = old_ics->u.next;
5888 (*ics)->user_conv_p = old_ics->user_conv_p;
5889 (*ics)->bad_p = old_ics->bad_p;
5890 return old_ics;
5893 return NULL;
5896 /* Compare two implicit conversion sequences according to the rules set out in
5897 [over.ics.rank]. Return values:
5899 1: ics1 is better than ics2
5900 -1: ics2 is better than ics1
5901 0: ics1 and ics2 are indistinguishable */
5903 static int
5904 compare_ics (conversion *ics1, conversion *ics2)
5906 tree from_type1;
5907 tree from_type2;
5908 tree to_type1;
5909 tree to_type2;
5910 tree deref_from_type1 = NULL_TREE;
5911 tree deref_from_type2 = NULL_TREE;
5912 tree deref_to_type1 = NULL_TREE;
5913 tree deref_to_type2 = NULL_TREE;
5914 conversion_rank rank1, rank2;
5916 /* REF_BINDING is nonzero if the result of the conversion sequence
5917 is a reference type. In that case REF_CONV is the reference
5918 binding conversion. */
5919 conversion *ref_conv1;
5920 conversion *ref_conv2;
5922 /* Handle implicit object parameters. */
5923 maybe_handle_implicit_object (&ics1);
5924 maybe_handle_implicit_object (&ics2);
5926 /* Handle reference parameters. */
5927 ref_conv1 = maybe_handle_ref_bind (&ics1);
5928 ref_conv2 = maybe_handle_ref_bind (&ics2);
5930 /* [over.ics.rank]
5932 When comparing the basic forms of implicit conversion sequences (as
5933 defined in _over.best.ics_)
5935 --a standard conversion sequence (_over.ics.scs_) is a better
5936 conversion sequence than a user-defined conversion sequence
5937 or an ellipsis conversion sequence, and
5939 --a user-defined conversion sequence (_over.ics.user_) is a
5940 better conversion sequence than an ellipsis conversion sequence
5941 (_over.ics.ellipsis_). */
5942 rank1 = CONVERSION_RANK (ics1);
5943 rank2 = CONVERSION_RANK (ics2);
5945 if (rank1 > rank2)
5946 return -1;
5947 else if (rank1 < rank2)
5948 return 1;
5950 if (rank1 == cr_bad)
5952 /* XXX Isn't this an extension? */
5953 /* Both ICS are bad. We try to make a decision based on what
5954 would have happened if they'd been good. */
5955 if (ics1->user_conv_p > ics2->user_conv_p
5956 || ics1->rank > ics2->rank)
5957 return -1;
5958 else if (ics1->user_conv_p < ics2->user_conv_p
5959 || ics1->rank < ics2->rank)
5960 return 1;
5962 /* We couldn't make up our minds; try to figure it out below. */
5965 if (ics1->ellipsis_p)
5966 /* Both conversions are ellipsis conversions. */
5967 return 0;
5969 /* User-defined conversion sequence U1 is a better conversion sequence
5970 than another user-defined conversion sequence U2 if they contain the
5971 same user-defined conversion operator or constructor and if the sec-
5972 ond standard conversion sequence of U1 is better than the second
5973 standard conversion sequence of U2. */
5975 if (ics1->user_conv_p)
5977 conversion *t1;
5978 conversion *t2;
5980 for (t1 = ics1; t1->kind != ck_user; t1 = t1->u.next)
5981 if (t1->kind == ck_ambig)
5982 return 0;
5983 for (t2 = ics2; t2->kind != ck_user; t2 = t2->u.next)
5984 if (t2->kind == ck_ambig)
5985 return 0;
5987 if (t1->cand->fn != t2->cand->fn)
5988 return 0;
5990 /* We can just fall through here, after setting up
5991 FROM_TYPE1 and FROM_TYPE2. */
5992 from_type1 = t1->type;
5993 from_type2 = t2->type;
5995 else
5997 conversion *t1;
5998 conversion *t2;
6000 /* We're dealing with two standard conversion sequences.
6002 [over.ics.rank]
6004 Standard conversion sequence S1 is a better conversion
6005 sequence than standard conversion sequence S2 if
6007 --S1 is a proper subsequence of S2 (comparing the conversion
6008 sequences in the canonical form defined by _over.ics.scs_,
6009 excluding any Lvalue Transformation; the identity
6010 conversion sequence is considered to be a subsequence of
6011 any non-identity conversion sequence */
6013 t1 = ics1;
6014 while (t1->kind != ck_identity)
6015 t1 = t1->u.next;
6016 from_type1 = t1->type;
6018 t2 = ics2;
6019 while (t2->kind != ck_identity)
6020 t2 = t2->u.next;
6021 from_type2 = t2->type;
6024 /* One sequence can only be a subsequence of the other if they start with
6025 the same type. They can start with different types when comparing the
6026 second standard conversion sequence in two user-defined conversion
6027 sequences. */
6028 if (same_type_p (from_type1, from_type2))
6030 if (is_subseq (ics1, ics2))
6031 return 1;
6032 if (is_subseq (ics2, ics1))
6033 return -1;
6036 /* [over.ics.rank]
6038 Or, if not that,
6040 --the rank of S1 is better than the rank of S2 (by the rules
6041 defined below):
6043 Standard conversion sequences are ordered by their ranks: an Exact
6044 Match is a better conversion than a Promotion, which is a better
6045 conversion than a Conversion.
6047 Two conversion sequences with the same rank are indistinguishable
6048 unless one of the following rules applies:
6050 --A conversion that is not a conversion of a pointer, or pointer
6051 to member, to bool is better than another conversion that is such
6052 a conversion.
6054 The ICS_STD_RANK automatically handles the pointer-to-bool rule,
6055 so that we do not have to check it explicitly. */
6056 if (ics1->rank < ics2->rank)
6057 return 1;
6058 else if (ics2->rank < ics1->rank)
6059 return -1;
6061 to_type1 = ics1->type;
6062 to_type2 = ics2->type;
6064 /* A conversion from scalar arithmetic type to complex is worse than a
6065 conversion between scalar arithmetic types. */
6066 if (same_type_p (from_type1, from_type2)
6067 && ARITHMETIC_TYPE_P (from_type1)
6068 && ARITHMETIC_TYPE_P (to_type1)
6069 && ARITHMETIC_TYPE_P (to_type2)
6070 && ((TREE_CODE (to_type1) == COMPLEX_TYPE)
6071 != (TREE_CODE (to_type2) == COMPLEX_TYPE)))
6073 if (TREE_CODE (to_type1) == COMPLEX_TYPE)
6074 return -1;
6075 else
6076 return 1;
6079 if (TYPE_PTR_P (from_type1)
6080 && TYPE_PTR_P (from_type2)
6081 && TYPE_PTR_P (to_type1)
6082 && TYPE_PTR_P (to_type2))
6084 deref_from_type1 = TREE_TYPE (from_type1);
6085 deref_from_type2 = TREE_TYPE (from_type2);
6086 deref_to_type1 = TREE_TYPE (to_type1);
6087 deref_to_type2 = TREE_TYPE (to_type2);
6089 /* The rules for pointers to members A::* are just like the rules
6090 for pointers A*, except opposite: if B is derived from A then
6091 A::* converts to B::*, not vice versa. For that reason, we
6092 switch the from_ and to_ variables here. */
6093 else if ((TYPE_PTRMEM_P (from_type1) && TYPE_PTRMEM_P (from_type2)
6094 && TYPE_PTRMEM_P (to_type1) && TYPE_PTRMEM_P (to_type2))
6095 || (TYPE_PTRMEMFUNC_P (from_type1)
6096 && TYPE_PTRMEMFUNC_P (from_type2)
6097 && TYPE_PTRMEMFUNC_P (to_type1)
6098 && TYPE_PTRMEMFUNC_P (to_type2)))
6100 deref_to_type1 = TYPE_PTRMEM_CLASS_TYPE (from_type1);
6101 deref_to_type2 = TYPE_PTRMEM_CLASS_TYPE (from_type2);
6102 deref_from_type1 = TYPE_PTRMEM_CLASS_TYPE (to_type1);
6103 deref_from_type2 = TYPE_PTRMEM_CLASS_TYPE (to_type2);
6106 if (deref_from_type1 != NULL_TREE
6107 && RECORD_OR_UNION_CODE_P (TREE_CODE (deref_from_type1))
6108 && RECORD_OR_UNION_CODE_P (TREE_CODE (deref_from_type2)))
6110 /* This was one of the pointer or pointer-like conversions.
6112 [over.ics.rank]
6114 --If class B is derived directly or indirectly from class A,
6115 conversion of B* to A* is better than conversion of B* to
6116 void*, and conversion of A* to void* is better than
6117 conversion of B* to void*. */
6118 if (TREE_CODE (deref_to_type1) == VOID_TYPE
6119 && TREE_CODE (deref_to_type2) == VOID_TYPE)
6121 if (is_properly_derived_from (deref_from_type1,
6122 deref_from_type2))
6123 return -1;
6124 else if (is_properly_derived_from (deref_from_type2,
6125 deref_from_type1))
6126 return 1;
6128 else if (TREE_CODE (deref_to_type1) == VOID_TYPE
6129 || TREE_CODE (deref_to_type2) == VOID_TYPE)
6131 if (same_type_p (deref_from_type1, deref_from_type2))
6133 if (TREE_CODE (deref_to_type2) == VOID_TYPE)
6135 if (is_properly_derived_from (deref_from_type1,
6136 deref_to_type1))
6137 return 1;
6139 /* We know that DEREF_TO_TYPE1 is `void' here. */
6140 else if (is_properly_derived_from (deref_from_type1,
6141 deref_to_type2))
6142 return -1;
6145 else if (RECORD_OR_UNION_CODE_P (TREE_CODE (deref_to_type1))
6146 && RECORD_OR_UNION_CODE_P (TREE_CODE (deref_to_type2)))
6148 /* [over.ics.rank]
6150 --If class B is derived directly or indirectly from class A
6151 and class C is derived directly or indirectly from B,
6153 --conversion of C* to B* is better than conversion of C* to
6156 --conversion of B* to A* is better than conversion of C* to
6157 A* */
6158 if (same_type_p (deref_from_type1, deref_from_type2))
6160 if (is_properly_derived_from (deref_to_type1,
6161 deref_to_type2))
6162 return 1;
6163 else if (is_properly_derived_from (deref_to_type2,
6164 deref_to_type1))
6165 return -1;
6167 else if (same_type_p (deref_to_type1, deref_to_type2))
6169 if (is_properly_derived_from (deref_from_type2,
6170 deref_from_type1))
6171 return 1;
6172 else if (is_properly_derived_from (deref_from_type1,
6173 deref_from_type2))
6174 return -1;
6178 else if (CLASS_TYPE_P (non_reference (from_type1))
6179 && same_type_p (from_type1, from_type2))
6181 tree from = non_reference (from_type1);
6183 /* [over.ics.rank]
6185 --binding of an expression of type C to a reference of type
6186 B& is better than binding an expression of type C to a
6187 reference of type A&
6189 --conversion of C to B is better than conversion of C to A, */
6190 if (is_properly_derived_from (from, to_type1)
6191 && is_properly_derived_from (from, to_type2))
6193 if (is_properly_derived_from (to_type1, to_type2))
6194 return 1;
6195 else if (is_properly_derived_from (to_type2, to_type1))
6196 return -1;
6199 else if (CLASS_TYPE_P (non_reference (to_type1))
6200 && same_type_p (to_type1, to_type2))
6202 tree to = non_reference (to_type1);
6204 /* [over.ics.rank]
6206 --binding of an expression of type B to a reference of type
6207 A& is better than binding an expression of type C to a
6208 reference of type A&,
6210 --conversion of B to A is better than conversion of C to A */
6211 if (is_properly_derived_from (from_type1, to)
6212 && is_properly_derived_from (from_type2, to))
6214 if (is_properly_derived_from (from_type2, from_type1))
6215 return 1;
6216 else if (is_properly_derived_from (from_type1, from_type2))
6217 return -1;
6221 /* [over.ics.rank]
6223 --S1 and S2 differ only in their qualification conversion and yield
6224 similar types T1 and T2 (_conv.qual_), respectively, and the cv-
6225 qualification signature of type T1 is a proper subset of the cv-
6226 qualification signature of type T2 */
6227 if (ics1->kind == ck_qual
6228 && ics2->kind == ck_qual
6229 && same_type_p (from_type1, from_type2))
6231 int result = comp_cv_qual_signature (to_type1, to_type2);
6232 if (result != 0)
6233 return result;
6236 /* [over.ics.rank]
6238 --S1 and S2 are reference bindings (_dcl.init.ref_) and neither refers
6239 to an implicit object parameter, and either S1 binds an lvalue reference
6240 to an lvalue and S2 binds an rvalue reference or S1 binds an rvalue
6241 reference to an rvalue and S2 binds an lvalue reference
6242 (C++0x draft standard, 13.3.3.2)
6244 --S1 and S2 are reference bindings (_dcl.init.ref_), and the
6245 types to which the references refer are the same type except for
6246 top-level cv-qualifiers, and the type to which the reference
6247 initialized by S2 refers is more cv-qualified than the type to
6248 which the reference initialized by S1 refers */
6250 if (ref_conv1 && ref_conv2)
6252 if (!ref_conv1->this_p && !ref_conv2->this_p
6253 && (TYPE_REF_IS_RVALUE (ref_conv1->type)
6254 != TYPE_REF_IS_RVALUE (ref_conv2->type)))
6256 if (ref_conv1->rvaluedness_matches_p)
6257 return 1;
6258 if (ref_conv2->rvaluedness_matches_p)
6259 return -1;
6262 if (same_type_ignoring_top_level_qualifiers_p (to_type1, to_type2))
6263 return comp_cv_qualification (TREE_TYPE (ref_conv2->type),
6264 TREE_TYPE (ref_conv1->type));
6267 /* Neither conversion sequence is better than the other. */
6268 return 0;
6271 /* The source type for this standard conversion sequence. */
6273 static tree
6274 source_type (conversion *t)
6276 for (;; t = t->u.next)
6278 if (t->kind == ck_user
6279 || t->kind == ck_ambig
6280 || t->kind == ck_identity)
6281 return t->type;
6283 gcc_unreachable ();
6286 /* Note a warning about preferring WINNER to LOSER. We do this by storing
6287 a pointer to LOSER and re-running joust to produce the warning if WINNER
6288 is actually used. */
6290 static void
6291 add_warning (struct z_candidate *winner, struct z_candidate *loser)
6293 candidate_warning *cw = (candidate_warning *)
6294 conversion_obstack_alloc (sizeof (candidate_warning));
6295 cw->loser = loser;
6296 cw->next = winner->warnings;
6297 winner->warnings = cw;
6300 /* Compare two candidates for overloading as described in
6301 [over.match.best]. Return values:
6303 1: cand1 is better than cand2
6304 -1: cand2 is better than cand1
6305 0: cand1 and cand2 are indistinguishable */
6307 static int
6308 joust (struct z_candidate *cand1, struct z_candidate *cand2, bool warn)
6310 int winner = 0;
6311 int off1 = 0, off2 = 0;
6312 size_t i;
6313 size_t len;
6315 /* Candidates that involve bad conversions are always worse than those
6316 that don't. */
6317 if (cand1->viable > cand2->viable)
6318 return 1;
6319 if (cand1->viable < cand2->viable)
6320 return -1;
6322 /* If we have two pseudo-candidates for conversions to the same type,
6323 or two candidates for the same function, arbitrarily pick one. */
6324 if (cand1->fn == cand2->fn
6325 && (IS_TYPE_OR_DECL_P (cand1->fn)))
6326 return 1;
6328 /* a viable function F1
6329 is defined to be a better function than another viable function F2 if
6330 for all arguments i, ICSi(F1) is not a worse conversion sequence than
6331 ICSi(F2), and then */
6333 /* for some argument j, ICSj(F1) is a better conversion sequence than
6334 ICSj(F2) */
6336 /* For comparing static and non-static member functions, we ignore
6337 the implicit object parameter of the non-static function. The
6338 standard says to pretend that the static function has an object
6339 parm, but that won't work with operator overloading. */
6340 len = cand1->num_convs;
6341 if (len != cand2->num_convs)
6343 int static_1 = DECL_STATIC_FUNCTION_P (cand1->fn);
6344 int static_2 = DECL_STATIC_FUNCTION_P (cand2->fn);
6346 gcc_assert (static_1 != static_2);
6348 if (static_1)
6349 off2 = 1;
6350 else
6352 off1 = 1;
6353 --len;
6357 for (i = 0; i < len; ++i)
6359 conversion *t1 = cand1->convs[i + off1];
6360 conversion *t2 = cand2->convs[i + off2];
6361 int comp = compare_ics (t1, t2);
6363 if (comp != 0)
6365 if (warn_sign_promo
6366 && (CONVERSION_RANK (t1) + CONVERSION_RANK (t2)
6367 == cr_std + cr_promotion)
6368 && t1->kind == ck_std
6369 && t2->kind == ck_std
6370 && TREE_CODE (t1->type) == INTEGER_TYPE
6371 && TREE_CODE (t2->type) == INTEGER_TYPE
6372 && (TYPE_PRECISION (t1->type)
6373 == TYPE_PRECISION (t2->type))
6374 && (TYPE_UNSIGNED (t1->u.next->type)
6375 || (TREE_CODE (t1->u.next->type)
6376 == ENUMERAL_TYPE)))
6378 tree type = t1->u.next->type;
6379 tree type1, type2;
6380 struct z_candidate *w, *l;
6381 if (comp > 0)
6382 type1 = t1->type, type2 = t2->type,
6383 w = cand1, l = cand2;
6384 else
6385 type1 = t2->type, type2 = t1->type,
6386 w = cand2, l = cand1;
6388 if (warn)
6390 warning (OPT_Wsign_promo, "passing %qT chooses %qT over %qT",
6391 type, type1, type2);
6392 warning (OPT_Wsign_promo, " in call to %qD", w->fn);
6394 else
6395 add_warning (w, l);
6398 if (winner && comp != winner)
6400 winner = 0;
6401 goto tweak;
6403 winner = comp;
6407 /* warn about confusing overload resolution for user-defined conversions,
6408 either between a constructor and a conversion op, or between two
6409 conversion ops. */
6410 if (winner && warn_conversion && cand1->second_conv
6411 && (!DECL_CONSTRUCTOR_P (cand1->fn) || !DECL_CONSTRUCTOR_P (cand2->fn))
6412 && winner != compare_ics (cand1->second_conv, cand2->second_conv))
6414 struct z_candidate *w, *l;
6415 bool give_warning = false;
6417 if (winner == 1)
6418 w = cand1, l = cand2;
6419 else
6420 w = cand2, l = cand1;
6422 /* We don't want to complain about `X::operator T1 ()'
6423 beating `X::operator T2 () const', when T2 is a no less
6424 cv-qualified version of T1. */
6425 if (DECL_CONTEXT (w->fn) == DECL_CONTEXT (l->fn)
6426 && !DECL_CONSTRUCTOR_P (w->fn) && !DECL_CONSTRUCTOR_P (l->fn))
6428 tree t = TREE_TYPE (TREE_TYPE (l->fn));
6429 tree f = TREE_TYPE (TREE_TYPE (w->fn));
6431 if (TREE_CODE (t) == TREE_CODE (f) && POINTER_TYPE_P (t))
6433 t = TREE_TYPE (t);
6434 f = TREE_TYPE (f);
6436 if (!comp_ptr_ttypes (t, f))
6437 give_warning = true;
6439 else
6440 give_warning = true;
6442 if (!give_warning)
6443 /*NOP*/;
6444 else if (warn)
6446 tree source = source_type (w->convs[0]);
6447 if (! DECL_CONSTRUCTOR_P (w->fn))
6448 source = TREE_TYPE (source);
6449 warning (OPT_Wconversion, "choosing %qD over %qD", w->fn, l->fn);
6450 warning (OPT_Wconversion, " for conversion from %qT to %qT",
6451 source, w->second_conv->type);
6452 inform (" because conversion sequence for the argument is better");
6454 else
6455 add_warning (w, l);
6458 if (winner)
6459 return winner;
6461 /* or, if not that,
6462 F1 is a non-template function and F2 is a template function
6463 specialization. */
6465 if (!cand1->template_decl && cand2->template_decl)
6466 return 1;
6467 else if (cand1->template_decl && !cand2->template_decl)
6468 return -1;
6470 /* or, if not that,
6471 F1 and F2 are template functions and the function template for F1 is
6472 more specialized than the template for F2 according to the partial
6473 ordering rules. */
6475 if (cand1->template_decl && cand2->template_decl)
6477 winner = more_specialized_fn
6478 (TI_TEMPLATE (cand1->template_decl),
6479 TI_TEMPLATE (cand2->template_decl),
6480 /* [temp.func.order]: The presence of unused ellipsis and default
6481 arguments has no effect on the partial ordering of function
6482 templates. add_function_candidate() will not have
6483 counted the "this" argument for constructors. */
6484 cand1->num_convs + DECL_CONSTRUCTOR_P (cand1->fn));
6485 if (winner)
6486 return winner;
6489 /* or, if not that,
6490 the context is an initialization by user-defined conversion (see
6491 _dcl.init_ and _over.match.user_) and the standard conversion
6492 sequence from the return type of F1 to the destination type (i.e.,
6493 the type of the entity being initialized) is a better conversion
6494 sequence than the standard conversion sequence from the return type
6495 of F2 to the destination type. */
6497 if (cand1->second_conv)
6499 winner = compare_ics (cand1->second_conv, cand2->second_conv);
6500 if (winner)
6501 return winner;
6504 /* Check whether we can discard a builtin candidate, either because we
6505 have two identical ones or matching builtin and non-builtin candidates.
6507 (Pedantically in the latter case the builtin which matched the user
6508 function should not be added to the overload set, but we spot it here.
6510 [over.match.oper]
6511 ... the builtin candidates include ...
6512 - do not have the same parameter type list as any non-template
6513 non-member candidate. */
6515 if (TREE_CODE (cand1->fn) == IDENTIFIER_NODE
6516 || TREE_CODE (cand2->fn) == IDENTIFIER_NODE)
6518 for (i = 0; i < len; ++i)
6519 if (!same_type_p (cand1->convs[i]->type,
6520 cand2->convs[i]->type))
6521 break;
6522 if (i == cand1->num_convs)
6524 if (cand1->fn == cand2->fn)
6525 /* Two built-in candidates; arbitrarily pick one. */
6526 return 1;
6527 else if (TREE_CODE (cand1->fn) == IDENTIFIER_NODE)
6528 /* cand1 is built-in; prefer cand2. */
6529 return -1;
6530 else
6531 /* cand2 is built-in; prefer cand1. */
6532 return 1;
6536 /* If the two functions are the same (this can happen with declarations
6537 in multiple scopes and arg-dependent lookup), arbitrarily choose one. */
6538 if (DECL_P (cand1->fn) && DECL_P (cand2->fn)
6539 && equal_functions (cand1->fn, cand2->fn))
6540 return 1;
6542 tweak:
6544 /* Extension: If the worst conversion for one candidate is worse than the
6545 worst conversion for the other, take the first. */
6546 if (!pedantic)
6548 conversion_rank rank1 = cr_identity, rank2 = cr_identity;
6549 struct z_candidate *w = 0, *l = 0;
6551 for (i = 0; i < len; ++i)
6553 if (CONVERSION_RANK (cand1->convs[i+off1]) > rank1)
6554 rank1 = CONVERSION_RANK (cand1->convs[i+off1]);
6555 if (CONVERSION_RANK (cand2->convs[i + off2]) > rank2)
6556 rank2 = CONVERSION_RANK (cand2->convs[i + off2]);
6558 if (rank1 < rank2)
6559 winner = 1, w = cand1, l = cand2;
6560 if (rank1 > rank2)
6561 winner = -1, w = cand2, l = cand1;
6562 if (winner)
6564 if (warn)
6566 pedwarn ("\
6567 ISO C++ says that these are ambiguous, even \
6568 though the worst conversion for the first is better than \
6569 the worst conversion for the second:");
6570 print_z_candidate (_("candidate 1:"), w);
6571 print_z_candidate (_("candidate 2:"), l);
6573 else
6574 add_warning (w, l);
6575 return winner;
6579 gcc_assert (!winner);
6580 return 0;
6583 /* Given a list of candidates for overloading, find the best one, if any.
6584 This algorithm has a worst case of O(2n) (winner is last), and a best
6585 case of O(n/2) (totally ambiguous); much better than a sorting
6586 algorithm. */
6588 static struct z_candidate *
6589 tourney (struct z_candidate *candidates)
6591 struct z_candidate *champ = candidates, *challenger;
6592 int fate;
6593 int champ_compared_to_predecessor = 0;
6595 /* Walk through the list once, comparing each current champ to the next
6596 candidate, knocking out a candidate or two with each comparison. */
6598 for (challenger = champ->next; challenger; )
6600 fate = joust (champ, challenger, 0);
6601 if (fate == 1)
6602 challenger = challenger->next;
6603 else
6605 if (fate == 0)
6607 champ = challenger->next;
6608 if (champ == 0)
6609 return NULL;
6610 champ_compared_to_predecessor = 0;
6612 else
6614 champ = challenger;
6615 champ_compared_to_predecessor = 1;
6618 challenger = champ->next;
6622 /* Make sure the champ is better than all the candidates it hasn't yet
6623 been compared to. */
6625 for (challenger = candidates;
6626 challenger != champ
6627 && !(champ_compared_to_predecessor && challenger->next == champ);
6628 challenger = challenger->next)
6630 fate = joust (champ, challenger, 0);
6631 if (fate != 1)
6632 return NULL;
6635 return champ;
6638 /* Returns nonzero if things of type FROM can be converted to TO. */
6640 bool
6641 can_convert (tree to, tree from)
6643 return can_convert_arg (to, from, NULL_TREE, LOOKUP_NORMAL);
6646 /* Returns nonzero if ARG (of type FROM) can be converted to TO. */
6648 bool
6649 can_convert_arg (tree to, tree from, tree arg, int flags)
6651 conversion *t;
6652 void *p;
6653 bool ok_p;
6655 /* Get the high-water mark for the CONVERSION_OBSTACK. */
6656 p = conversion_obstack_alloc (0);
6658 t = implicit_conversion (to, from, arg, /*c_cast_p=*/false,
6659 flags);
6660 ok_p = (t && !t->bad_p);
6662 /* Free all the conversions we allocated. */
6663 obstack_free (&conversion_obstack, p);
6665 return ok_p;
6668 /* Like can_convert_arg, but allows dubious conversions as well. */
6670 bool
6671 can_convert_arg_bad (tree to, tree from, tree arg)
6673 conversion *t;
6674 void *p;
6676 /* Get the high-water mark for the CONVERSION_OBSTACK. */
6677 p = conversion_obstack_alloc (0);
6678 /* Try to perform the conversion. */
6679 t = implicit_conversion (to, from, arg, /*c_cast_p=*/false,
6680 LOOKUP_NORMAL);
6681 /* Free all the conversions we allocated. */
6682 obstack_free (&conversion_obstack, p);
6684 return t != NULL;
6687 /* Convert EXPR to TYPE. Return the converted expression.
6689 Note that we allow bad conversions here because by the time we get to
6690 this point we are committed to doing the conversion. If we end up
6691 doing a bad conversion, convert_like will complain. */
6693 tree
6694 perform_implicit_conversion (tree type, tree expr, tsubst_flags_t complain)
6696 conversion *conv;
6697 void *p;
6699 if (error_operand_p (expr))
6700 return error_mark_node;
6702 /* Get the high-water mark for the CONVERSION_OBSTACK. */
6703 p = conversion_obstack_alloc (0);
6705 conv = implicit_conversion (type, TREE_TYPE (expr), expr,
6706 /*c_cast_p=*/false,
6707 LOOKUP_NORMAL);
6708 if (!conv)
6710 if (complain & tf_error)
6711 error ("could not convert %qE to %qT", expr, type);
6712 expr = error_mark_node;
6714 else if (processing_template_decl)
6716 /* In a template, we are only concerned about determining the
6717 type of non-dependent expressions, so we do not have to
6718 perform the actual conversion. */
6719 if (TREE_TYPE (expr) != type)
6720 expr = build_nop (type, expr);
6722 else
6723 expr = convert_like (conv, expr, complain);
6725 /* Free all the conversions we allocated. */
6726 obstack_free (&conversion_obstack, p);
6728 return expr;
6731 /* Convert EXPR to TYPE (as a direct-initialization) if that is
6732 permitted. If the conversion is valid, the converted expression is
6733 returned. Otherwise, NULL_TREE is returned, except in the case
6734 that TYPE is a class type; in that case, an error is issued. If
6735 C_CAST_P is true, then this direction initialization is taking
6736 place as part of a static_cast being attempted as part of a C-style
6737 cast. */
6739 tree
6740 perform_direct_initialization_if_possible (tree type,
6741 tree expr,
6742 bool c_cast_p,
6743 tsubst_flags_t complain)
6745 conversion *conv;
6746 void *p;
6748 if (type == error_mark_node || error_operand_p (expr))
6749 return error_mark_node;
6750 /* [dcl.init]
6752 If the destination type is a (possibly cv-qualified) class type:
6754 -- If the initialization is direct-initialization ...,
6755 constructors are considered. ... If no constructor applies, or
6756 the overload resolution is ambiguous, the initialization is
6757 ill-formed. */
6758 if (CLASS_TYPE_P (type))
6760 expr = build_special_member_call (NULL_TREE, complete_ctor_identifier,
6761 build_tree_list (NULL_TREE, expr),
6762 type, LOOKUP_NORMAL, complain);
6763 return build_cplus_new (type, expr);
6766 /* Get the high-water mark for the CONVERSION_OBSTACK. */
6767 p = conversion_obstack_alloc (0);
6769 conv = implicit_conversion (type, TREE_TYPE (expr), expr,
6770 c_cast_p,
6771 LOOKUP_NORMAL);
6772 if (!conv || conv->bad_p)
6773 expr = NULL_TREE;
6774 else
6775 expr = convert_like_real (conv, expr, NULL_TREE, 0, 0,
6776 /*issue_conversion_warnings=*/false,
6777 c_cast_p,
6778 tf_warning_or_error);
6780 /* Free all the conversions we allocated. */
6781 obstack_free (&conversion_obstack, p);
6783 return expr;
6786 /* DECL is a VAR_DECL whose type is a REFERENCE_TYPE. The reference
6787 is being bound to a temporary. Create and return a new VAR_DECL
6788 with the indicated TYPE; this variable will store the value to
6789 which the reference is bound. */
6791 tree
6792 make_temporary_var_for_ref_to_temp (tree decl, tree type)
6794 tree var;
6796 /* Create the variable. */
6797 var = create_temporary_var (type);
6799 /* Register the variable. */
6800 if (TREE_STATIC (decl))
6802 /* Namespace-scope or local static; give it a mangled name. */
6803 tree name;
6805 TREE_STATIC (var) = 1;
6806 name = mangle_ref_init_variable (decl);
6807 DECL_NAME (var) = name;
6808 SET_DECL_ASSEMBLER_NAME (var, name);
6809 var = pushdecl_top_level (var);
6811 else
6812 /* Create a new cleanup level if necessary. */
6813 maybe_push_cleanup_level (type);
6815 return var;
6818 /* Convert EXPR to the indicated reference TYPE, in a way suitable for
6819 initializing a variable of that TYPE. If DECL is non-NULL, it is
6820 the VAR_DECL being initialized with the EXPR. (In that case, the
6821 type of DECL will be TYPE.) If DECL is non-NULL, then CLEANUP must
6822 also be non-NULL, and with *CLEANUP initialized to NULL. Upon
6823 return, if *CLEANUP is no longer NULL, it will be an expression
6824 that should be pushed as a cleanup after the returned expression
6825 is used to initialize DECL.
6827 Return the converted expression. */
6829 tree
6830 initialize_reference (tree type, tree expr, tree decl, tree *cleanup)
6832 conversion *conv;
6833 void *p;
6835 if (type == error_mark_node || error_operand_p (expr))
6836 return error_mark_node;
6838 /* Get the high-water mark for the CONVERSION_OBSTACK. */
6839 p = conversion_obstack_alloc (0);
6841 conv = reference_binding (type, TREE_TYPE (expr), expr, /*c_cast_p=*/false,
6842 LOOKUP_NORMAL);
6843 if (!conv || conv->bad_p)
6845 if (!(TYPE_QUALS (TREE_TYPE (type)) & TYPE_QUAL_CONST)
6846 && !real_lvalue_p (expr))
6847 error ("invalid initialization of non-const reference of "
6848 "type %qT from a temporary of type %qT",
6849 type, TREE_TYPE (expr));
6850 else
6851 error ("invalid initialization of reference of type "
6852 "%qT from expression of type %qT", type,
6853 TREE_TYPE (expr));
6854 return error_mark_node;
6857 /* If DECL is non-NULL, then this special rule applies:
6859 [class.temporary]
6861 The temporary to which the reference is bound or the temporary
6862 that is the complete object to which the reference is bound
6863 persists for the lifetime of the reference.
6865 The temporaries created during the evaluation of the expression
6866 initializing the reference, except the temporary to which the
6867 reference is bound, are destroyed at the end of the
6868 full-expression in which they are created.
6870 In that case, we store the converted expression into a new
6871 VAR_DECL in a new scope.
6873 However, we want to be careful not to create temporaries when
6874 they are not required. For example, given:
6876 struct B {};
6877 struct D : public B {};
6878 D f();
6879 const B& b = f();
6881 there is no need to copy the return value from "f"; we can just
6882 extend its lifetime. Similarly, given:
6884 struct S {};
6885 struct T { operator S(); };
6886 T t;
6887 const S& s = t;
6889 we can extend the lifetime of the return value of the conversion
6890 operator. */
6891 gcc_assert (conv->kind == ck_ref_bind);
6892 if (decl)
6894 tree var;
6895 tree base_conv_type;
6897 /* Skip over the REF_BIND. */
6898 conv = conv->u.next;
6899 /* If the next conversion is a BASE_CONV, skip that too -- but
6900 remember that the conversion was required. */
6901 if (conv->kind == ck_base)
6903 base_conv_type = conv->type;
6904 conv = conv->u.next;
6906 else
6907 base_conv_type = NULL_TREE;
6908 /* Perform the remainder of the conversion. */
6909 expr = convert_like_real (conv, expr,
6910 /*fn=*/NULL_TREE, /*argnum=*/0,
6911 /*inner=*/-1,
6912 /*issue_conversion_warnings=*/true,
6913 /*c_cast_p=*/false,
6914 tf_warning_or_error);
6915 if (error_operand_p (expr))
6916 expr = error_mark_node;
6917 else
6919 if (!real_lvalue_p (expr))
6921 tree init;
6922 tree type;
6924 /* Create the temporary variable. */
6925 type = TREE_TYPE (expr);
6926 var = make_temporary_var_for_ref_to_temp (decl, type);
6927 layout_decl (var, 0);
6928 /* If the rvalue is the result of a function call it will be
6929 a TARGET_EXPR. If it is some other construct (such as a
6930 member access expression where the underlying object is
6931 itself the result of a function call), turn it into a
6932 TARGET_EXPR here. It is important that EXPR be a
6933 TARGET_EXPR below since otherwise the INIT_EXPR will
6934 attempt to make a bitwise copy of EXPR to initialize
6935 VAR. */
6936 if (TREE_CODE (expr) != TARGET_EXPR)
6937 expr = get_target_expr (expr);
6938 /* Create the INIT_EXPR that will initialize the temporary
6939 variable. */
6940 init = build2 (INIT_EXPR, type, var, expr);
6941 if (at_function_scope_p ())
6943 add_decl_expr (var);
6945 if (TREE_STATIC (var))
6946 init = add_stmt_to_compound (init, register_dtor_fn (var));
6947 else
6948 *cleanup = cxx_maybe_build_cleanup (var);
6950 /* We must be careful to destroy the temporary only
6951 after its initialization has taken place. If the
6952 initialization throws an exception, then the
6953 destructor should not be run. We cannot simply
6954 transform INIT into something like:
6956 (INIT, ({ CLEANUP_STMT; }))
6958 because emit_local_var always treats the
6959 initializer as a full-expression. Thus, the
6960 destructor would run too early; it would run at the
6961 end of initializing the reference variable, rather
6962 than at the end of the block enclosing the
6963 reference variable.
6965 The solution is to pass back a cleanup expression
6966 which the caller is responsible for attaching to
6967 the statement tree. */
6969 else
6971 rest_of_decl_compilation (var, /*toplev=*/1, at_eof);
6972 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
6973 static_aggregates = tree_cons (NULL_TREE, var,
6974 static_aggregates);
6976 /* Use its address to initialize the reference variable. */
6977 expr = build_address (var);
6978 if (base_conv_type)
6979 expr = convert_to_base (expr,
6980 build_pointer_type (base_conv_type),
6981 /*check_access=*/true,
6982 /*nonnull=*/true);
6983 expr = build2 (COMPOUND_EXPR, TREE_TYPE (expr), init, expr);
6985 else
6986 /* Take the address of EXPR. */
6987 expr = cp_build_unary_op (ADDR_EXPR, expr, 0, tf_warning_or_error);
6988 /* If a BASE_CONV was required, perform it now. */
6989 if (base_conv_type)
6990 expr = (perform_implicit_conversion
6991 (build_pointer_type (base_conv_type), expr,
6992 tf_warning_or_error));
6993 expr = build_nop (type, expr);
6996 else
6997 /* Perform the conversion. */
6998 expr = convert_like (conv, expr, tf_warning_or_error);
7000 /* Free all the conversions we allocated. */
7001 obstack_free (&conversion_obstack, p);
7003 return expr;
7006 #include "gt-cp-call.h"