mirror of git://gcc.gnu.org/git/gcc.git
class.c (resolve_address_of_overloaded_function): Don't emit an inform if the matching permerror returns false.
/cp 2018-07-16 Paolo Carlini <paolo.carlini@oracle.com> * class.c (resolve_address_of_overloaded_function): Don't emit an inform if the matching permerror returns false. * pt.c (check_specialization_namespace): Likewise. /testsuite 2018-07-16 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/template/spec40.C: New. * g++.dg/parse/ptrmem8.C: Likewise. From-SVN: r262740
This commit is contained in:
parent
20b47be02c
commit
99422caabd
|
|
@ -1,3 +1,9 @@
|
|||
2018-07-16 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* class.c (resolve_address_of_overloaded_function): Don't emit an
|
||||
inform if the matching permerror returns false.
|
||||
* pt.c (check_specialization_namespace): Likewise.
|
||||
|
||||
2018-07-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/3698
|
||||
|
|
|
|||
|
|
@ -7919,10 +7919,11 @@ resolve_address_of_overloaded_function (tree target_type,
|
|||
if (!(complain & tf_error))
|
||||
return error_mark_node;
|
||||
|
||||
permerror (input_location, "assuming pointer to member %qD", fn);
|
||||
if (!explained)
|
||||
if (permerror (input_location, "assuming pointer to member %qD", fn)
|
||||
&& !explained)
|
||||
{
|
||||
inform (input_location, "(a pointer to member can only be formed with %<&%E%>)", fn);
|
||||
inform (input_location, "(a pointer to member can only be "
|
||||
"formed with %<&%E%>)", fn);
|
||||
explained = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -800,10 +800,10 @@ check_specialization_namespace (tree tmpl)
|
|||
return true;
|
||||
else
|
||||
{
|
||||
permerror (input_location,
|
||||
"specialization of %qD in different namespace", tmpl);
|
||||
inform (DECL_SOURCE_LOCATION (tmpl),
|
||||
" from definition of %q#D", tmpl);
|
||||
if (permerror (input_location,
|
||||
"specialization of %qD in different namespace", tmpl))
|
||||
inform (DECL_SOURCE_LOCATION (tmpl),
|
||||
" from definition of %q#D", tmpl);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2018-07-16 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* g++.dg/template/spec40.C: New.
|
||||
* g++.dg/parse/ptrmem8.C: Likewise.
|
||||
|
||||
2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
|
||||
* gcc.target/s390/mnop-mcount-m31-fpic.c: New testcase.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
// { dg-options "-fpermissive -w" }
|
||||
|
||||
struct A
|
||||
{
|
||||
template<int> void foo()
|
||||
{
|
||||
void (A::* fp)();
|
||||
fp = A::foo<0>; // { dg-bogus "pointer to member" }
|
||||
}
|
||||
};
|
||||
|
||||
void bar()
|
||||
{
|
||||
A().foo<0>();
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
// { dg-options "-fpermissive -w" }
|
||||
|
||||
namespace N {
|
||||
template <typename T>
|
||||
struct S {
|
||||
void f() {} // { dg-bogus "from definition" }
|
||||
};
|
||||
}
|
||||
|
||||
namespace K {
|
||||
template <> void N::S<char>::f() {}
|
||||
}
|
||||
Loading…
Reference in New Issue