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
This commit is contained in:
parent
f8f42513b0
commit
c966f2deb7
|
@ -1,3 +1,8 @@
|
||||||
|
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>
|
2013-02-27 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/56358
|
PR c++/56358
|
||||||
|
|
|
@ -7033,7 +7033,10 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
|
||||||
if (!already_used)
|
if (!already_used)
|
||||||
mark_used (fn);
|
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 t;
|
||||||
tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (argarray[0])),
|
tree binfo = lookup_base (TREE_TYPE (TREE_TYPE (argarray[0])),
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
// 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>();
|
||||||
|
}
|
Loading…
Reference in New Issue