From: Volker Reichelt Date: Thu, 8 Mar 2007 07:26:43 +0000 (+0000) Subject: re PR c++/30534 (ICE with invalid template argument) X-Git-Tag: releases/gcc-4.3.0~6382 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cc891727f0647d3123c9776250dc08edeec91e51;p=thirdparty%2Fgcc.git re PR c++/30534 (ICE with invalid template argument) PR c++/30534 * pt.c (any_template_arguments_need_structural_equality_p): Robustify. * g++.dg/template/arg5.C: New test. From-SVN: r122685 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index de0dfd425f1f..35e0f9fdfe16 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2007-03-08 Volker Reichelt + + PR c++/30534 + * pt.c (any_template_arguments_need_structural_equality_p): + Robustify. + 2007-03-08 Alexandre Oliva * decl.c (grokdeclarator): Disable warnings for anonymous diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 8ade0a095c5f..84ff4219ee3b 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -13131,7 +13131,9 @@ any_template_arguments_need_structural_equality_p (tree args) for (j = 0; j < TREE_VEC_LENGTH (level); ++j) { tree arg = TREE_VEC_ELT (level, j); - if (TREE_CODE (arg) == TEMPLATE_DECL + if (error_operand_p (arg)) + return true; + else if (TREE_CODE (arg) == TEMPLATE_DECL || TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM) continue; else if (TYPE_P (arg) && TYPE_STRUCTURAL_EQUALITY_P (arg)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7d2b3235c1d8..28c386f06d74 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-03-08 Volker Reichelt + + PR c++/30534 + * g++.dg/template/arg5.C: New test. + 2007-03-07 Joseph Myers * g++.dg/eh/arm-iwmmxt-unwind.C: New test. diff --git a/gcc/testsuite/g++.dg/template/arg5.C b/gcc/testsuite/g++.dg/template/arg5.C new file mode 100644 index 000000000000..3d67143b12d6 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/arg5.C @@ -0,0 +1,9 @@ +// PR c++/30534 +// { dg-do compile } + +template struct A; + +template void foo() +{ + A<__builtin_constant_p(.)> a; // { dg-error "template argument" } +}