diff options
author | Patrick Palka <ppalka@redhat.com> | 2023-09-18 14:41:07 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2023-09-18 14:41:07 -0400 |
commit | a6ac1fc64c3caed19da65c2e6b12f8ddaf551231 (patch) | |
tree | 57df49e74ab211c89bd0dd1979a3dd118c7135cf /libobjc | |
parent | 155178ccb5f5bc89dcc8261ae1b64bc2fbfdbd45 (diff) | |
download | gcc-a6ac1fc64c3caed19da65c2e6b12f8ddaf551231.zip gcc-a6ac1fc64c3caed19da65c2e6b12f8ddaf551231.tar.gz gcc-a6ac1fc64c3caed19da65c2e6b12f8ddaf551231.tar.bz2 |
c++: unifying identical tmpls from current inst [PR108347]
Here more_specialized_partial_spec wrongly considers the two partial
specializations to be unordered ultimately because unify for identical
parm=arg=A<T>::C returns failure due to C being dependent.
This patch fixes this by relaxing unify's early-exit identity test to
also accept dependent decls; we can't deduce anything further from them
anyway. In passing this patch removes the CONST_DECL case of unify:
we should never see the CONST_DECL version of a template parameter here,
and for other CONST_DECLs (such as enumerators) it seems we can rely on
them to already have been folded to their DECL_INITIAL.
PR c++/108347
gcc/cp/ChangeLog:
* pt.cc (unify): Return unify_success for identical dependent
DECL_P 'arg' and 'parm'.
<case CONST_DECL>: Remove handling.
gcc/testsuite/ChangeLog:
* g++.dg/template/ttp41.C: New test.
Diffstat (limited to 'libobjc')
0 files changed, 0 insertions, 0 deletions