Commit ccaff498 by Jason Merrill Committed by Jason Merrill

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
parent 29367844
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.
......
...@@ -2773,7 +2773,7 @@ add_builtin_candidates (struct z_candidate **candidates, enum tree_code code, ...@@ -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, ...@@ -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))
......
...@@ -722,7 +722,7 @@ build_throw (tree exp) ...@@ -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
......
...@@ -10246,7 +10246,7 @@ tsubst_arg_types (tree arg_types, ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment