From: Nathan Sidwell Date: Wed, 14 Feb 2001 09:50:06 +0000 (+0000) Subject: pt.c (unify): Don't check cv quals of array types. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d0ab76243b1d7c0c8fed61ccc9b6835216a90e5f;p=gcc.git pt.c (unify): Don't check cv quals of array types. 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 746b2f52703..880e100b753 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2001-02-14 Nathan Sidwell + + * pt.c (unify): Don't check cv quals of array types. + 2001-02-14 Nathan Sidwell * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index bad8117162d..f82981bd979 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60fd86894d0..e4837997c04 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-02-14 Nathan Sidwell + + * g++.old-deja/g++.pt/deduct6.C: New test. + 2001-02-14 Nathan Sidwell * 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 index 00000000000..7fcef4edc4b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct6.C @@ -0,0 +1,24 @@ +// Build don't link: +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 13 Feb 2001 + +// Bug 1962. We were not dealing with qualified array types properly. + +#include + +template 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; +}