From: Kriang Lerdsuwanakij Date: Mon, 17 Feb 2003 15:42:58 +0000 (+0000) Subject: re PR c++/9457 (ICE in tsubst_copy, at cp/pt.c:7124) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=db77ef4c9390380d0d99a7067a8886db36566482;p=gcc.git re PR c++/9457 (ICE in tsubst_copy, at cp/pt.c:7124) PR c++/9457 * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute CONSTRUCTOR_ELTS only once. * g++.dg/template/init1.C: New test. From-SVN: r63002 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 85bc0e46c6b..7278ec4e6fb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-02-17 Kriang Lerdsuwanakij + + PR c++/9457 + * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute + CONSTRUCTOR_ELTS only once. + 2003-02-16 Kriang Lerdsuwanakij PR c++/9459 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index d04ec2356a9..959bd54e93d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -8290,8 +8290,7 @@ tsubst_copy_and_build (t, args, complain, in_decl) initializers as they are identifier nodes which will be looked up by digest_init. */ purpose_p = !(type && IS_AGGR_TYPE (type)); - for (elts = tsubst_copy (CONSTRUCTOR_ELTS (t), args, complain, - in_decl); + for (elts = CONSTRUCTOR_ELTS (t); elts; elts = TREE_CHAIN (elts)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0356de92d98..bf170897512 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-02-17 Kriang Lerdsuwanakij + + PR c++/9457 + * g++.dg/template/init1.C: New test. + Sun Feb 16 23:08:19 CET 2003 Jan HUbicka * gcc.dg/c90-const-expr-3.c (DZERO): New static variable diff --git a/gcc/testsuite/g++.dg/template/init1.C b/gcc/testsuite/g++.dg/template/init1.C new file mode 100644 index 00000000000..fdbff8d3cb1 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/init1.C @@ -0,0 +1,10 @@ +// { dg-do compile } + +// Origin: Wolfgang Bangerth + +// PR c++/9457: ICE tsubst'ing initializers in templates. + +template void foo (int count) { + int i = {count}; +} +template void foo (int);