diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 558e756fe55..4fc80176191 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2011-06-21 Jason Merrill + * 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 3ac7a8e3f54..8123e3dd252 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 3399652241f..f8c8e4734a8 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 4d2caa88307..2716f783123 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