In function get_default_value of tree-ssa-ccp.c,
261   else if (is_gimple_assign (stmt)
262            /* Value-returning GIMPLE_CALL statements assign to
263               a variable, and are treated similarly to GIMPLE_ASSIGN.  */
264            || (is_gimple_call (stmt)
265                && gimple_call_lhs (stmt) != NULL_TREE)
266            || gimple_code (stmt) == GIMPLE_PHI)
267     {
268       tree cst;
269       if (gimple_assign_single_p (stmt)
270           && DECL_P (gimple_assign_rhs1 (stmt))
271           && (cst = get_symbol_constant_value (gimple_assign_rhs1 (stmt))))
272         {
273           val.lattice_val = CONSTANT;
274           val.value = cst;
275         }
276       else
277         /* Any other variable defined by an assignment or a PHI node
278            is considered UNDEFINED.  */
279         val.lattice_val = UNDEFINED;
if the stmt is a gimple call node or a gimple phi node, it will never satisfy
the condition gimple_assign_single_p (stmt). so there exists redundant condition
checks. The patch attached try to remove this.


Bootstrap passed. Regression tested on x86_64-unknown-linux-gnu (pc).

ChangeLog:
2013-08-13  Zhouyi Zhou  <yizhouz...@ict.ac.cn>
        * tree-ssa-ccp.c (get_default_value): remove redundant condition checks 


-- 
Zhouyi Zhou <yizhouz...@ict.ac.cn>
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 6472f48..7fbb687 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -258,12 +258,7 @@ get_default_value (tree var)
          val.mask = double_int_minus_one;
        }
     }
-  else if (is_gimple_assign (stmt)
-          /* Value-returning GIMPLE_CALL statements assign to
-             a variable, and are treated similarly to GIMPLE_ASSIGN.  */
-          || (is_gimple_call (stmt)
-              && gimple_call_lhs (stmt) != NULL_TREE)
-          || gimple_code (stmt) == GIMPLE_PHI)
+  else if (is_gimple_assign (stmt))
     {
       tree cst;
       if (gimple_assign_single_p (stmt)
@@ -274,10 +269,18 @@ get_default_value (tree var)
          val.value = cst;
        }
       else
-       /* Any other variable defined by an assignment or a PHI node
+       /* Any other variable defined by an assignment
           is considered UNDEFINED.  */
        val.lattice_val = UNDEFINED;
     }
+  else if ((is_gimple_call (stmt)
+              && gimple_call_lhs (stmt) != NULL_TREE)
+          || gimple_code (stmt) == GIMPLE_PHI)
+    {
+      /*Variable defined by a call or a PHI node
+       is considered UNDEFINED. */
+      val.lattice_val = UNDEFINED;
+    }
   else
     {
       /* Otherwise, VAR will never take on a constant value.  */

Reply via email to