diff options
author | Nathan Sidwell <nathan@acm.org> | 2018-04-27 14:01:09 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2018-04-27 14:01:09 +0000 |
commit | 036b5ad136407a9a399ee4dc7d33067e0d95672e (patch) | |
tree | 20205b876ea4b4d7816d9fefb794b8f5154ad66e | |
parent | 3db18011e5c9f4060dc9cba1440056b2e0de2c00 (diff) | |
download | gcc-036b5ad136407a9a399ee4dc7d33067e0d95672e.zip gcc-036b5ad136407a9a399ee4dc7d33067e0d95672e.tar.gz gcc-036b5ad136407a9a399ee4dc7d33067e0d95672e.tar.bz2 |
[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
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 30 |
2 files changed, 14 insertions, 18 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4346021..149262c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2018-04-27 Nathan Sidwell <nathan@acm.org> + * 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 907d31d..24a206a 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); |