Commit 5ae37bdf by Nathan Sidwell Committed by Nathan Sidwell

re PR c++/79290 (forming pointer to member function tries to access "__pfn")

	PR c++/79290
	* typeck.c (build_ptrmemfunc_access_expr): Set TREE_NO_WARNING.

	PR c++/79290
	* g++.dg/warn/pr79290.C: New.

From-SVN: r245069
parent 0751254a
2017-01-31 Nathan Sidwell <nathan@acm.org> 2017-01-31 Nathan Sidwell <nathan@acm.org>
PR c++/79290
* typeck.c (build_ptrmemfunc_access_expr): Set TREE_NO_WARNING.
PR c++/67273 PR c++/67273
PR c++/79253 PR c++/79253
* pt.c: (instantiate_decl): Push to top level when current * pt.c: (instantiate_decl): Push to top level when current
......
...@@ -2950,7 +2950,10 @@ build_ptrmemfunc_access_expr (tree ptrmem, tree member_name) ...@@ -2950,7 +2950,10 @@ build_ptrmemfunc_access_expr (tree ptrmem, tree member_name)
member = DECL_CHAIN (member)) member = DECL_CHAIN (member))
if (DECL_NAME (member) == member_name) if (DECL_NAME (member) == member_name)
break; break;
return build_simple_component_ref (ptrmem, member); tree res = build_simple_component_ref (ptrmem, member);
TREE_NO_WARNING (res) = 1;
return res;
} }
/* Given an expression PTR for a pointer, return an expression /* Given an expression PTR for a pointer, return an expression
......
2017-01-31 Nathan Sidwell <nathan@acm.org> 2017-01-31 Nathan Sidwell <nathan@acm.org>
PR c++/79290
* g++.dg/warn/pr79290.C: New.
PR c++/67273 PR c++/67273
PR c++/79253 PR c++/79253
* g++.dg/cpp1y/pr67273.C: New. * g++.dg/cpp1y/pr67273.C: New.
......
// { dg-additional-options "-Wall" }
// PR 79290, bogus warning looking inside PMF
struct Song {
int get() const ;
};
typedef int (Song::*PMF_t)() const;
struct SongTag {
PMF_t function () const;
};
template<typename T>
struct Printer {
bool Foo(const SongTag &st) {
return st.function () == &Song::get;
}
};
void Baz (Printer<int> *p, SongTag const &st)
{
p->Foo (st);
}
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