aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-06-21 15:05:33 -0400
committerJason Merrill <jason@gcc.gnu.org>2011-06-21 15:05:33 -0400
commitccaff498ac86149a980278f7e527270a1b3d7089 (patch)
tree67f5bb40a59930b076ecb84d9f12951f05921314
parent293678445f2f62406fabf6a70c2bdbae4e8346f3 (diff)
downloadgcc-ccaff498ac86149a980278f7e527270a1b3d7089.zip
gcc-ccaff498ac86149a980278f7e527270a1b3d7089.tar.gz
gcc-ccaff498ac86149a980278f7e527270a1b3d7089.tar.bz2
call.c (add_builtin_candidates): Use cv_unqualified rather than TYPE_MAIN_VARIANT.
* call.c (add_builtin_candidates): Use cv_unqualified rather than TYPE_MAIN_VARIANT. * pt.c (tsubst_arg_types): Likewise. * except.c (build_throw): Use cv_unqualified. From-SVN: r175272
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/call.c4
-rw-r--r--gcc/cp/except.c2
-rw-r--r--gcc/cp/pt.c2
4 files changed, 9 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 558e756..4fc8017 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,10 @@
2011-06-21 Jason Merrill <jason@redhat.com>
+ * call.c (add_builtin_candidates): Use cv_unqualified rather than
+ TYPE_MAIN_VARIANT.
+ * pt.c (tsubst_arg_types): Likewise.
+ * except.c (build_throw): Use cv_unqualified.
+
PR c++/49418
* call.c (cxx_type_promotes_to): Don't strip cv-quals.
* semantics.c (lambda_return_type): Strip them here.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 3ac7a8e..8123e3d 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -2773,7 +2773,7 @@ add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
type = non_reference (type);
if (i != 0 || ! ref1)
{
- type = TYPE_MAIN_VARIANT (type_decays_to (type));
+ type = cv_unqualified (type_decays_to (type));
if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
VEC_safe_push (tree, gc, types[i], type);
if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
@@ -2792,7 +2792,7 @@ add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
type = non_reference (argtypes[i]);
if (i != 0 || ! ref1)
{
- type = TYPE_MAIN_VARIANT (type_decays_to (type));
+ type = cv_unqualified (type_decays_to (type));
if (enum_p && UNSCOPED_ENUM_P (type))
VEC_safe_push (tree, gc, types[i], type);
if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 3399652..f8c8e47 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -722,7 +722,7 @@ build_throw (tree exp)
respectively. */
temp_type = is_bitfield_expr_with_lowered_type (exp);
if (!temp_type)
- temp_type = type_decays_to (TREE_TYPE (exp));
+ temp_type = cv_unqualified (type_decays_to (TREE_TYPE (exp)));
/* OK, this is kind of wacky. The standard says that we call
terminate when the exception handling mechanism, after
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 4d2caa8..2716f78 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -10246,7 +10246,7 @@ tsubst_arg_types (tree arg_types,
/* Do array-to-pointer, function-to-pointer conversion, and ignore
top-level qualifiers as required. */
- type = TYPE_MAIN_VARIANT (type_decays_to (type));
+ type = cv_unqualified (type_decays_to (type));
/* We do not substitute into default arguments here. The standard
mandates that they be instantiated only when needed, which is