* pt.c (unify): Don't allow reduced cv-quals when strict.
authorJason Merrill <jason@yorick.cygnus.com>
Tue, 3 Mar 1998 01:57:32 +0000 (01:57 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 3 Mar 1998 01:57:32 +0000 (20:57 -0500)
From-SVN: r18383

gcc/cp/ChangeLog
gcc/cp/pt.c

index d8adeecfda0ad90d1e796932b9e92e941d71be8c..73b3b3ac190135811220987595df4d2b97ecac8f 100644 (file)
@@ -1,5 +1,7 @@
 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
 
+       * pt.c (unify): Don't allow reduced cv-quals when strict.
+
        * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
        *type_unification* and unify.
 
index 3a3db96cce6f4edcef6b2f78333266167fadde03..36f8aafa5541d6c3e5946a32b47da653d074cd0f 100644 (file)
@@ -5290,6 +5290,13 @@ unify (tparms, targs, ntparms, parm, arg, strict)
   if (arg == parm)
     return 0;
 
+  /* We can't remove cv-quals when strict.  */
+  if (strict && TREE_CODE (arg) == TREE_CODE (parm)
+      && TREE_CODE_CLASS (TREE_CODE (arg)) == 't'
+      && (TYPE_READONLY (arg) < TYPE_READONLY (parm)
+         || TYPE_VOLATILE (arg) < TYPE_VOLATILE (parm)))
+    return 1;
+
   switch (TREE_CODE (parm))
     {
     case TYPENAME_TYPE: