[C++ PATCH] cleanup 2
authorNathan Sidwell <nathan@acm.org>
Fri, 27 Apr 2018 14:01:09 +0000 (14:01 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Fri, 27 Apr 2018 14:01:09 +0000 (14:01 +0000)
https://gcc.gnu.org/ml/gcc-patches/2018-04/msg01231.html
* typeck.c (convert_ptrmem): Move local var decls to initialization.

From-SVN: r259710

gcc/cp/ChangeLog
gcc/cp/typeck.c

index 4346021..149262c 100644 (file)
@@ -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.
index 907d31d..24a206a 100644 (file)
@@ -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);