c++: Function type and parameter type disagreements [PR92010]
authorPatrick Palka <ppalka@redhat.com>
Mon, 30 Mar 2020 23:55:03 +0000 (19:55 -0400)
committerPatrick Palka <ppalka@redhat.com>
Wed, 8 Apr 2020 14:13:32 +0000 (10:13 -0400)
commit12f55e030ed068d5c7b14c65a74d102db925dab2
tree570b24e3fd05b2ec5433176a9ce735240c3ca17c
parent975e6670c428b032aa6ec600f57082d3cfb57393
c++: Function type and parameter type disagreements [PR92010]

This resolves parts of Core issues 1001/1322 by rebuilding the function type
of an instantiated function template in terms of its formal parameter types
whenever the original function type and formal parameter types disagree about
the type of a parameter after substitution.

gcc/cp/ChangeLog:

Core issues 1001 and 1322
PR c++/92010
* pt.c (rebuild_function_or_method_type): Split function out from ...
(tsubst_function_type): ... here.
(maybe_rebuild_function_decl_type): New function.
(tsubst_function_decl): Use it.

gcc/testsuite/ChangeLog:

Core issues 1001 and 1322
PR c++/92010
* g++.dg/cpp2a/lambda-uneval11.c: New test.
* g++.dg/template/array33.C: New test.
* g++.dg/template/array34.C: New test.
* g++.dg/template/defarg22.C: New test.
gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp2a/lambda-uneval11.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/array33.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/array34.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/defarg22.C [new file with mode: 0644]