pt.c (unify): Don't check cv quals of array types.
authorNathan Sidwell <nathan@codesourcery.com>
Wed, 14 Feb 2001 09:50:06 +0000 (09:50 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 14 Feb 2001 09:50:06 +0000 (09:50 +0000)
cp:
* pt.c (unify): Don't check cv quals of array types.
testsuite:
* g++.old-deja/g++.pt/deduct6.C: New test.

From-SVN: r39666

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.pt/deduct6.C [new file with mode: 0644]

index 746b2f52703a2bf7c6b43ed718dc6527bbdd0e8c..880e100b753af483215b002d46a396ee9ea3e52f 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * pt.c (unify): Don't check cv quals of array types.
+
 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
 
        * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
index bad8117162d13b8fd1ee0481b2d92063572af6ae..f82981bd97994cbfbbd0cbbefda1018079b217b4 100644 (file)
@@ -8552,6 +8552,10 @@ unify (tparms, targs, parm, arg, strict)
      cv-qualification mismatches.  */
   if (TREE_CODE (arg) == TREE_CODE (parm)
       && TYPE_P (arg)
+      /* It is the elements of the array which hold the cv quals of an array
+         type, and the elements might be template type parms. We'll check
+         when we recurse.  */
+      && TREE_CODE (arg) != ARRAY_TYPE
       /* We check the cv-qualifiers when unifying with template type
         parameters below.  We want to allow ARG `const T' to unify with
         PARM `T' for example, when computing which of two templates
index 60fd86894d0494f696bee0eb1c7e6cc14ca1302a..e4837997c0459fbff7d2a8e0b2dc4ba28fc49502 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * g++.old-deja/g++.pt/deduct6.C: New test.
+
 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
 
        * g++.old-deja/g++.pt/deduct5.C: New test.
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct6.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct6.C
new file mode 100644 (file)
index 0000000..7fcef4e
--- /dev/null
@@ -0,0 +1,24 @@
+// Build don't link:
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 13 Feb 2001 <nathan@codesourcery.com>
+
+// Bug 1962. We were not dealing with qualified array types properly.
+
+#include <stdio.h>
+
+template <typename T, unsigned I> int Baz (T (&obj)[I])
+{
+  printf ("%s\n", __PRETTY_FUNCTION__);
+  return 1;
+}
+
+int main ()
+{
+  static int const ca[1] = {1};
+  static int a[1] = {1};
+  
+  Baz (ca);
+  Baz (a);
+  
+  return 0;
+}