Commit c966f2de by Jason Merrill Committed by Jason Merrill

re PR c++/56243 (ICE in tree check: expected field_decl, have identifier_node in…

re PR c++/56243 (ICE in tree check: expected field_decl, have identifier_node in fixed_type_or_null, at cp/class.c:6645)

	PR c++/56243
	* call.c (build_over_call): Avoid virtual lookup in a template.

From-SVN: r196343
parent f8f42513
2013-02-28 Jason Merrill <jason@redhat.com>
PR c++/56243
* call.c (build_over_call): Avoid virtual lookup in a template.
2013-02-27 Jason Merrill <jason@redhat.com>
PR c++/56358
......
......@@ -7033,7 +7033,10 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
if (!already_used)
mark_used (fn);
if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0)
if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0
/* Don't mess with virtual lookup in fold_non_dependent_expr; virtual
functions can't be constexpr. */
&& !in_template_function ())
{
tree t;
tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (argarray[0])),
......
// PR c++/56243
struct A
{
virtual int String ();
};
struct F: A { };
struct G
{
F value;
};
struct D
{
template <int>
void Verify()
{
G x;
F& name = x.value;
name.String();
}
};
int main()
{
D d;
d.Verify<42>();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment