Fix the remaining PR c++/24666 blockers (arrays decay to pointers too early)
authorPatrick Palka <ppalka@gcc.gnu.org>
Tue, 19 Jan 2016 00:19:16 +0000 (00:19 +0000)
committerPatrick Palka <ppalka@gcc.gnu.org>
Tue, 19 Jan 2016 00:19:16 +0000 (00:19 +0000)
commit17c15cb932563bb814865c39abc2b952c7707f79
treec8fda91b6b8fbccdc143d90c1d753def47ac5deb
parent49f8a19186f939a7561cb2bae31ffa67c649c606
Fix the remaining PR c++/24666 blockers (arrays decay to pointers too early)

gcc/cp/ChangeLog:

PR c++/11858
PR c++/24663
PR c++/24664
* decl.c (grokdeclarator): Don't decay array parameter type to
a pointer type if it's dependent.
(grokparms): Invoke strip_top_quals instead of directly invoking
cp_build_qualified_type.
* pt.c (decay_dependent_array_parm_type): New static function.
(type_unification_real): Call decay_dependent_array_parm_type
to decay a dependent array parameter type to its corresponding
pointer type before unification.
(more_specialized_fn): Likewise.
(get_bindings): Likewise.
* tree.c (cp_build_qualified_type): Trivial typofix in
documentation.

gcc/testsuite/ChangeLog:

PR c++/11858
PR c++/24663
PR c++/24664
* g++.dg/template/pr11858.C: New test.
* g++.dg/template/pr24663.C: New test.
* g++.dg/template/unify12.C: New test.
* g++.dg/template/unify13.C: New test.
* g++.dg/template/unify14.C: New test.
* g++.dg/template/unify15.C: New test.
* g++.dg/template/unify16.C: New test.
* g++.dg/template/unify17.C: New test.

From-SVN: r232547
13 files changed:
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/pt.c
gcc/cp/tree.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/pr11858.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/pr24663.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/unify12.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/unify13.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/unify14.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/unify15.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/unify16.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/unify17.C [new file with mode: 0644]