}
}
+ /* An argument should have gone through convert_from_reference. */
+ gcc_checking_assert (!expr || !TYPE_REF_P (from));
+
if (TYPE_REF_P (to))
conv = reference_binding (to, from, expr, c_cast_p, flags, complain);
else
if (convs->bad_p && !(complain & tf_error))
return error_mark_node;
+ gcc_checking_assert (!TYPE_REF_P (TREE_TYPE (expr)));
+
if (convs->bad_p
&& convs->kind != ck_user
&& convs->kind != ck_list
conversion. */
push_deferring_access_checks (dk_deferred);
+ /* Handle callers like check_local_shadow forgetting to
+ convert_from_reference. */
+ if (TYPE_REF_P (from) && arg)
+ {
+ arg = convert_from_reference (arg);
+ from = TREE_TYPE (arg);
+ }
+
t = implicit_conversion (to, from, arg, /*c_cast_p=*/false,
flags, complain);
ok_p = (t && !t->bad_p);