aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2018-04-27 14:01:09 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2018-04-27 14:01:09 +0000
commit036b5ad136407a9a399ee4dc7d33067e0d95672e (patch)
tree20205b876ea4b4d7816d9fefb794b8f5154ad66e /gcc
parent3db18011e5c9f4060dc9cba1440056b2e0de2c00 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog2
-rw-r--r--gcc/cp/typeck.c30
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);