From: jakub Date: Mon, 18 Jul 2016 18:42:24 +0000 (+0000) Subject: PR c++/71826 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d3dd9e339562cc0f6b4ff76696c191d808554028;p=thirdparty%2Fgcc.git PR c++/71826 * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P. * g++.dg/template/pr71826.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238441 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3cd6b133869e..899b2aeb6567 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2016-07-18 Jakub Jelinek + PR c++/71826 + * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P. + PR c++/71822 * cp-gimplify.c (cp_gimplify_expr) : Recursively fold *expr_p before genericizing it. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 1fbf546aaf23..916fd7b47c49 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2f6471a6c6b0..060fcebbf017 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2016-07-18 Jakub Jelinek + PR c++/71826 + * g++.dg/template/pr71826.C: New test. + PR c++/71822 * g++.dg/template/defarg21.C: New test. diff --git a/gcc/testsuite/g++.dg/template/pr71826.C b/gcc/testsuite/g++.dg/template/pr71826.C new file mode 100644 index 000000000000..753fd7e14cec --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr71826.C @@ -0,0 +1,17 @@ +// PR c++/71826 +// { dg-do compile } + +template struct A { int i; }; // { dg-message "note" } +struct B { void i () {} }; // { dg-message "note" } +template struct C : A , B +{ + void f () { i (); } // { dg-error "is ambiguous" } +}; + +int +main () +{ + C c; + c.f (); + return 0; +}