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
This commit is contained in:
Jason Merrill 2011-06-21 15:05:33 -04:00 committed by Jason Merrill
parent 293678445f
commit ccaff498ac
4 changed files with 9 additions and 4 deletions

View File

@ -1,5 +1,10 @@
2011-06-21 Jason Merrill <jason@redhat.com> 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 PR c++/49418
* call.c (cxx_type_promotes_to): Don't strip cv-quals. * call.c (cxx_type_promotes_to): Don't strip cv-quals.
* semantics.c (lambda_return_type): Strip them here. * semantics.c (lambda_return_type): Strip them here.

View File

@ -2773,7 +2773,7 @@ add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
type = non_reference (type); type = non_reference (type);
if (i != 0 || ! ref1) 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) if (enum_p && TREE_CODE (type) == ENUMERAL_TYPE)
VEC_safe_push (tree, gc, types[i], type); VEC_safe_push (tree, gc, types[i], type);
if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (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]); type = non_reference (argtypes[i]);
if (i != 0 || ! ref1) 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)) if (enum_p && UNSCOPED_ENUM_P (type))
VEC_safe_push (tree, gc, types[i], type); VEC_safe_push (tree, gc, types[i], type);
if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))

View File

@ -722,7 +722,7 @@ build_throw (tree exp)
respectively. */ respectively. */
temp_type = is_bitfield_expr_with_lowered_type (exp); temp_type = is_bitfield_expr_with_lowered_type (exp);
if (!temp_type) 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 /* OK, this is kind of wacky. The standard says that we call
terminate when the exception handling mechanism, after terminate when the exception handling mechanism, after

View File

@ -10246,7 +10246,7 @@ tsubst_arg_types (tree arg_types,
/* Do array-to-pointer, function-to-pointer conversion, and ignore /* Do array-to-pointer, function-to-pointer conversion, and ignore
top-level qualifiers as required. */ 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 /* We do not substitute into default arguments here. The standard
mandates that they be instantiated only when needed, which is mandates that they be instantiated only when needed, which is