diff options
author | Jason Merrill <jason@redhat.com> | 2011-06-21 15:05:33 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-06-21 15:05:33 -0400 |
commit | ccaff498ac86149a980278f7e527270a1b3d7089 (patch) | |
tree | 67f5bb40a59930b076ecb84d9f12951f05921314 | |
parent | 293678445f2f62406fabf6a70c2bdbae4e8346f3 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/call.c | 4 | ||||
-rw-r--r-- | gcc/cp/except.c | 2 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 |
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 |