OSDN Git Service

Fix PR c++/42225, take 2
authordodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Dec 2009 22:40:37 +0000 (22:40 +0000)
committerdodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Dec 2009 22:40:37 +0000 (22:40 +0000)
commit8a03d6ff8dad449a497a6490b84da7cdd5484a80
tree1dea0c05df1cc3687feff71c23514edde26e0836
parent587b620848aa4c7d61e68bd864cd628a5f08b7a1
Fix PR c++/42225, take 2

gcc/cp/ChangeLog:
PR c++/42225
* pt.c (push_template_decl_real): Set DECL_CONTEXT of template type
parms to their containing template decl.
* typeck.c (comp_template_parms_position): Split this from
structural_comptypes.
(incompatible_template_type_parms_p): Renamed
incompatible_dependent_typedefs_p into this. Change the function to
handle comparison between TEMPLATE_TYPE_PARMs only.
(structural_comptypes): Use comp_template_parms_position in
TEMPLATE_TEMPLATE_PARM and BOUND_TEMPLATE_TEMPLATE_PARM cases.
Use incompatible_template_type_parms_p in TEMPLATE_TYPE_PARM case.
* mangle.c (decl_mangling_context): Template type parms don't have
a mangling context.
* tree.c (cp_set_underlying_type): Set type structural equality
only for TEMPLATE_TYPE_PARMs.

gcc/testsuite/ChangeLog:
PR c++/42225
* g++.dg/template/typedef26.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155363 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/mangle.c
gcc/cp/pt.c
gcc/cp/tree.c
gcc/cp/typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/typedef26.C [new file with mode: 0644]