aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/constexpr.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2017-06-09 20:40:44 -0400
committerJason Merrill <jason@gcc.gnu.org>2017-06-09 20:40:44 -0400
commit8b8b203a26bdac3dede77e76d06e4e7084f79acc (patch)
tree17fc780673ab6af72b41232e6ed5191e0b849c1d /gcc/cp/constexpr.c
parent52486891929862f8272e1c602957f5cb3b5d6e2a (diff)
downloadgcc-8b8b203a26bdac3dede77e76d06e4e7084f79acc.zip
gcc-8b8b203a26bdac3dede77e76d06e4e7084f79acc.tar.gz
gcc-8b8b203a26bdac3dede77e76d06e4e7084f79acc.tar.bz2
Overhaul pointer-to-member conversion and template argument handling.
* call.c (standard_conversion): Avoid creating ck_pmem when the class type is the same. * cvt.c (can_convert_qual): Split from perform_qualification_conversions. * constexpr.c (cxx_eval_constant_expression): Check it. * typeck.c (convert_ptrmem): Only cplus_expand_constant if adjustment is necessary. * pt.c (check_valid_ptrmem_cst_expr): Compare class types. (convert_nontype_argument): Avoid redundant error. From-SVN: r249088
Diffstat (limited to 'gcc/cp/constexpr.c')
-rw-r--r--gcc/cp/constexpr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index 8bbe950..ae24e40 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -4399,7 +4399,8 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t,
if (TREE_CODE (op) == PTRMEM_CST && tcode == NOP_EXPR)
{
if (same_type_ignoring_top_level_qualifiers_p (type,
- TREE_TYPE (op)))
+ TREE_TYPE (op))
+ || can_convert_qual (type, op))
return cp_fold_convert (type, op);
else
{