From: Nathan Sidwell Date: Fri, 27 Apr 2018 14:01:09 +0000 (+0000) Subject: [C++ PATCH] cleanup 2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=036b5ad136407a9a399ee4dc7d33067e0d95672e;p=gcc.git [C++ PATCH] cleanup 2 https://gcc.gnu.org/ml/gcc-patches/2018-04/msg01231.html * typeck.c (convert_ptrmem): Move local var decls to initialization. From-SVN: r259710 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4346021a1c7..149262c4786 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2018-04-27 Nathan Sidwell + * typeck.c (convert_ptrmem): Move local var decls to initialization. + * cp-tree.h (TEMPLATE_INFO): Fix comments. (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO. (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 907d31d9786..24a206a2511 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -6833,34 +6833,28 @@ convert_ptrmem (tree type, tree expr, bool allow_inverse_p, if (TYPE_PTRDATAMEM_P (type)) { - tree delta; + tree delta = (get_delta_difference + (TYPE_PTRMEM_CLASS_TYPE (TREE_TYPE (expr)), + TYPE_PTRMEM_CLASS_TYPE (type), + allow_inverse_p, c_cast_p, complain)); - delta = get_delta_difference (TYPE_PTRMEM_CLASS_TYPE (TREE_TYPE (expr)), - TYPE_PTRMEM_CLASS_TYPE (type), - allow_inverse_p, - c_cast_p, complain); if (delta == error_mark_node) return error_mark_node; if (!integer_zerop (delta)) { - tree cond, op1, op2; - if (TREE_CODE (expr) == PTRMEM_CST) expr = cplus_expand_constant (expr); - cond = cp_build_binary_op (input_location, - EQ_EXPR, - expr, - build_int_cst (TREE_TYPE (expr), -1), - complain); - op1 = build_nop (ptrdiff_type_node, expr); - op2 = cp_build_binary_op (input_location, - PLUS_EXPR, op1, delta, - complain); + + tree cond = cp_build_binary_op (input_location, EQ_EXPR, expr, + build_int_cst (TREE_TYPE (expr), -1), + complain); + tree op1 = build_nop (ptrdiff_type_node, expr); + tree op2 = cp_build_binary_op (input_location, PLUS_EXPR, op1, delta, + complain); expr = fold_build3_loc (input_location, - COND_EXPR, ptrdiff_type_node, cond, op1, op2); - + COND_EXPR, ptrdiff_type_node, cond, op1, op2); } return build_nop (type, expr);