aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1998-03-03 01:57:32 +0000
committerJason Merrill <jason@gcc.gnu.org>1998-03-02 20:57:32 -0500
commit494321710472a23a9a75d046f9a0fb413e33d2d2 (patch)
tree6e51715d20d4ec0d5df52d95017ec5e8ee6d94ab
parent5f9e09cd6ceed932b871479931dd2c9b8c587766 (diff)
downloadgcc-494321710472a23a9a75d046f9a0fb413e33d2d2.zip
gcc-494321710472a23a9a75d046f9a0fb413e33d2d2.tar.gz
gcc-494321710472a23a9a75d046f9a0fb413e33d2d2.tar.bz2
* pt.c (unify): Don't allow reduced cv-quals when strict.
From-SVN: r18383
-rw-r--r--gcc/cp/ChangeLog2
-rw-r--r--gcc/cp/pt.c7
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d8adeec..73b3b3a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 3a3db96..36f8aaf 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -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: