OSDN Git Service

PR c++/30534
authorreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Mar 2007 07:26:43 +0000 (07:26 +0000)
committerreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Mar 2007 07:26:43 +0000 (07:26 +0000)
* pt.c (any_template_arguments_need_structural_equality_p):
Robustify.

* g++.dg/template/arg5.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122685 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/arg5.C [new file with mode: 0644]

index de0dfd4..35e0f9f 100644 (file)
@@ -1,3 +1,9 @@
+2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
+
+       PR c++/30534
+       * pt.c (any_template_arguments_need_structural_equality_p):
+       Robustify.
+
 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
 
        * decl.c (grokdeclarator): Disable warnings for anonymous
index 8ade0a0..84ff421 100644 (file)
@@ -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))
index 7d2b323..28c386f 100644 (file)
@@ -1,3 +1,8 @@
+2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
+
+       PR c++/30534
+       * g++.dg/template/arg5.C: New test.
+
 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
 
        * 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 (file)
index 0000000..3d67143
--- /dev/null
@@ -0,0 +1,9 @@
+// PR c++/30534
+// { dg-do compile }
+
+template<bool> struct A;
+
+template<int> void foo()
+{
+  A<__builtin_constant_p(.)> a;  // { dg-error "template argument" }
+}