Replace dead store with early return
authorJonathan Wakely <jwakely@redhat.com>
Wed, 30 May 2018 08:18:33 +0000 (09:18 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 30 May 2018 08:18:33 +0000 (09:18 +0100)
* typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
of using it in dead store.

From-SVN: r260920

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

index e94615f0ea339d2f3fb9201ad530859414a3b91a..37874c02fa4665dc24e98bde7072b15e0a39bab9 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
+
+       * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
+       of using it in dead store.
+
 2018-05-29  Jason Merrill  <jason@redhat.com>
 
        PR c++/67445 - returning temporary initializer_list.
index 25d11f5c7b6c7667dd63c520c71329b6f9d04789..9febdb908ae9220e745097791fe7743d1d3cfe2b 100644 (file)
@@ -1597,9 +1597,6 @@ tree
 cxx_sizeof_or_alignof_type (tree type, enum tree_code op, bool std_alignof,
                            bool complain)
 {
-  tree value;
-  bool dependent_p;
-
   gcc_assert (op == SIZEOF_EXPR || op == ALIGNOF_EXPR);
   if (type == error_mark_node)
     return error_mark_node;
@@ -1608,15 +1605,17 @@ cxx_sizeof_or_alignof_type (tree type, enum tree_code op, bool std_alignof,
   if (TREE_CODE (type) == METHOD_TYPE)
     {
       if (complain)
-       pedwarn (input_location, OPT_Wpointer_arith, 
-                "invalid application of %qs to a member function", 
-                OVL_OP_INFO (false, op)->name);
+       {
+         pedwarn (input_location, OPT_Wpointer_arith,
+                  "invalid application of %qs to a member function",
+                  OVL_OP_INFO (false, op)->name);
+         return size_one_node;
+       }
       else
        return error_mark_node;
-      value = size_one_node;
     }
 
-  dependent_p = dependent_type_p (type);
+  bool dependent_p = dependent_type_p (type);
   if (!dependent_p)
     complete_type (type);
   if (dependent_p
@@ -1630,7 +1629,7 @@ cxx_sizeof_or_alignof_type (tree type, enum tree_code op, bool std_alignof,
          && COMPLETE_TYPE_P (type)
          && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST))
     {
-      value = build_min (op, size_type_node, type);
+      tree value = build_min (op, size_type_node, type);
       TREE_READONLY (value) = 1;
       if (op == ALIGNOF_EXPR && std_alignof)
        ALIGNOF_EXPR_STD_P (value) = true;