From: Mark Mitchell Date: Tue, 10 Dec 2002 22:32:42 +0000 (+0000) Subject: re PR c++/8372 (ICE on explicit call of destructor) X-Git-Tag: releases/gcc-3.2.2~188 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=846fe43d56a423726f4bf5313b8ff700cd179d89;p=thirdparty%2Fgcc.git re PR c++/8372 (ICE on explicit call of destructor) PR c++/8372 * pt.c (tsubst_copy): Handle destructor names more correctly. PR c++/8372 * g++.dg/template/dtor1.C: New test. From-SVN: r60017 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ca47c0740707..213fc233e072 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-12-10 Mark Mitchell + + PR c++/8372 + * pt.c (tsubst_copy): Handle destructor names more correctly. + 2002-12-05 Kaveh R. Ghazi * error.c (dump_expr): Fix format specifier warning. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 07137c0870dc..c6fbff44f9aa 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7148,9 +7148,10 @@ tsubst_copy (t, args, complain, in_decl) { tree base = tsubst_copy (TREE_OPERAND (name, 0), args, complain, in_decl); - name = TREE_OPERAND (name, 1); - name = tsubst_copy (TREE_OPERAND (name, 0), args, - complain, in_decl); + name = TREE_OPERAND (TREE_OPERAND (name, 1), 0); + if (TREE_CODE (name) == TYPE_DECL) + name = TREE_TYPE (name); + name = tsubst_copy (name, args, complain, in_decl); name = build1 (BIT_NOT_EXPR, NULL_TREE, name); name = build_nt (SCOPE_REF, base, name); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2e3eadce5908..f51c90fbb94e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-12-10 Mark Mitchell + + PR c++/8372 + * g++.dg/template/dtor1.C: New test. + 2002-12-10 Mark Mitchell * g++.old-deja/g++.ext/memconst.C: Use old-deja, not dg, error