re PR c++/48481 (C++ overloading memory hog)
PR c++/48481 * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot. Release unused vector. From-SVN: r172162
This commit is contained in:
parent
6ae81785e5
commit
c9b558895e
@ -1,5 +1,9 @@
|
||||
2011-04-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/48481
|
||||
* call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
|
||||
Release unused vector.
|
||||
|
||||
PR c++/48451
|
||||
* pt.c (fn_type_unification): Don't clear incomplete pack flag.
|
||||
(type_unification_real): Clear it here instead.
|
||||
|
@ -3249,7 +3249,9 @@ build_user_type_conversion_1 (tree totype, tree expr, int flags)
|
||||
|| !DERIVED_FROM_P (totype, fromtype));
|
||||
|
||||
if (MAYBE_CLASS_TYPE_P (totype))
|
||||
ctors = lookup_fnfields (totype, complete_ctor_identifier, 0);
|
||||
/* Use lookup_fnfields_slot instead of lookup_fnfields to avoid
|
||||
creating a garbage BASELINK; constructors can't be inherited. */
|
||||
ctors = lookup_fnfields_slot (totype, complete_ctor_identifier);
|
||||
|
||||
if (MAYBE_CLASS_TYPE_P (fromtype))
|
||||
{
|
||||
@ -3281,7 +3283,6 @@ build_user_type_conversion_1 (tree totype, tree expr, int flags)
|
||||
if (ctors)
|
||||
{
|
||||
int ctorflags = flags;
|
||||
ctors = BASELINK_FUNCTIONS (ctors);
|
||||
|
||||
first_arg = build_int_cst (build_pointer_type (totype), 0);
|
||||
|
||||
@ -3389,7 +3390,11 @@ build_user_type_conversion_1 (tree totype, tree expr, int flags)
|
||||
|
||||
candidates = splice_viable (candidates, pedantic, &any_viable_p);
|
||||
if (!any_viable_p)
|
||||
return NULL;
|
||||
{
|
||||
if (args)
|
||||
release_tree_vector (args);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cand = tourney (candidates);
|
||||
if (cand == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user