diff options
author | Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> | 2003-02-17 15:42:58 +0000 |
---|---|---|
committer | Kriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org> | 2003-02-17 15:42:58 +0000 |
commit | db77ef4c9390380d0d99a7067a8886db36566482 (patch) | |
tree | 73dba666cb0507d4543200b08950e8ea5197d87c | |
parent | e6ddcef66a2a8ee4bc82cda39d96c78ae488f37a (diff) | |
download | gcc-db77ef4c9390380d0d99a7067a8886db36566482.zip gcc-db77ef4c9390380d0d99a7067a8886db36566482.tar.gz gcc-db77ef4c9390380d0d99a7067a8886db36566482.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/init1.C | 10 |
4 files changed, 22 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 85bc0e4..7278ec4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-02-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/9457 + * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute + CONSTRUCTOR_ELTS only once. + 2003-02-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> PR c++/9459 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index d04ec23..959bd54 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 0356de9..bf17089 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-02-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/9457 + * g++.dg/template/init1.C: New test. + Sun Feb 16 23:08:19 CET 2003 Jan HUbicka <jh@suse.cz> * 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 0000000..fdbff8d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/init1.C @@ -0,0 +1,10 @@ +// { dg-do compile } + +// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> + +// PR c++/9457: ICE tsubst'ing initializers in templates. + +template <typename> void foo (int count) { + int i = {count}; +} +template void foo<int> (int); |