Commit 7a7f16ca by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/71826 (ICE on valid C++ code with ambiguous member lookup: tree check:…

re PR c++/71826 (ICE on valid C++ code with ambiguous member lookup: tree check: expected baselink, have error_mark in tsubst_baselink, at cp/pt.c:13737)

	PR c++/71826
	* pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.

	* g++.dg/template/pr71826.C: New test.

From-SVN: r238441
parent f4d90295
2016-07-18 Jakub Jelinek <jakub@redhat.com>
PR c++/71826
* pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
PR c++/71822
* cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
fold *expr_p before genericizing it.
......
......@@ -13767,7 +13767,8 @@ tsubst_baselink (tree baselink, tree object_type,
BASELINK_FUNCTIONS (baselink),
template_args);
/* Update the conversion operator type. */
BASELINK_OPTYPE (baselink) = optype;
if (BASELINK_P (baselink))
BASELINK_OPTYPE (baselink) = optype;
if (!object_type)
object_type = current_class_type;
......
2016-07-18 Jakub Jelinek <jakub@redhat.com>
PR c++/71826
* g++.dg/template/pr71826.C: New test.
PR c++/71822
* g++.dg/template/defarg21.C: New test.
......
// PR c++/71826
// { dg-do compile }
template <class> struct A { int i; }; // { dg-message "note" }
struct B { void i () {} }; // { dg-message "note" }
template <class T> struct C : A <T>, B
{
void f () { i (); } // { dg-error "is ambiguous" }
};
int
main ()
{
C <int> c;
c.f ();
return 0;
}
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