Skip to content
Snippets Groups Projects
Commit 27a1fb38 authored by Sergei Trofimovich's avatar Sergei Trofimovich
Browse files

c++: fix ptrmemfunc template instantiation [PR101219]

r12-1804 ("cp: add support for per-location warning groups.") among other
things removed warning suppression from a few places including ptrmemfuncs.

This exposed a bug in warning detection code as a reference to missing
BINFO (it's intentionally missing for ptrmemfunc types):

    crash_signal
        gcc/toplev.c:328
    perform_or_defer_access_check(tree_node*, tree_node*, tree_node*, int, access_failure_info*)
        gcc/cp/semantics.c:490
    finish_non_static_data_member(tree_node*, tree_node*, tree_node*)
        gcc/cp/semantics.c:2208
    ...

The change special cases ptrmemfuncs in templace substitution by using
build_ptrmemfunc_access_expr() instead of finish_non_static_data_member().

gcc/cp/ChangeLog:

	PR c++/101219
	* pt.c (tsubst_copy_and_build): Use build_ptrmemfunc_access_expr
	to construct ptrmemfunc expression instantiation.

gcc/testsuite/ChangeLog:

	PR c++/101219
	* g++.dg/warn/pr101219.C: New test.
parent d2ba65ab
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment