tree-if-conv.c (if_convertible_gimple_assign_stmt_p): Use ifcvt_could_trap_p also...
authorRichard Biener <rguenther@suse.de>
Fri, 10 Jul 2015 08:20:15 +0000 (08:20 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 10 Jul 2015 08:20:15 +0000 (08:20 +0000)
2015-07-10  Richard Biener  <rguenther@suse.de>

* tree-if-conv.c (if_convertible_gimple_assign_stmt_p):
Use ifcvt_could_trap_p also when not flag_tree_loop_if_convert_stores.
(if_convertible_loop_p_1): For this always compute bb predicates.
(if_convertible_loop_p): And free them.

From-SVN: r225654

gcc/ChangeLog
gcc/tree-if-conv.c

index 9862267e85770dc4ca200a249c876182089eed1a..20a130168518fc06478e46310e0bc9cca3e1e82f 100644 (file)
@@ -1,3 +1,10 @@
+2015-07-10  Richard Biener  <rguenther@suse.de>
+
+       * tree-if-conv.c (if_convertible_gimple_assign_stmt_p):
+       Use ifcvt_could_trap_p also when not flag_tree_loop_if_convert_stores.
+       (if_convertible_loop_p_1): For this always compute bb predicates.
+       (if_convertible_loop_p): And free them.
+
 2015-07-10  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
 
        * ipa-icf.c (sem_item_optimizer::do_congruence_step): Fix typo
index ef2612c959c3733fbcc9cfb09aa8c09bd26fc549..a1a584bdf8d08436848f299727fb6f542e6ba53a 100644 (file)
@@ -874,7 +874,7 @@ if_convertible_gimple_assign_stmt_p (gimple stmt,
       return true;
     }
 
-  if (gimple_assign_rhs_could_trap_p (stmt))
+  if (ifcvt_could_trap_p (stmt, refs))
     {
       if (ifcvt_can_use_mask_load_store (stmt))
        {
@@ -1297,18 +1297,15 @@ if_convertible_loop_p_1 (struct loop *loop,
          }
     }
 
-  if (flag_tree_loop_if_convert_stores)
-    {
-      data_reference_p dr;
+  data_reference_p dr;
 
-      for (i = 0; refs->iterate (i, &dr); i++)
-       {
-         dr->aux = XNEW (struct ifc_dr);
-         DR_WRITTEN_AT_LEAST_ONCE (dr) = -1;
-         DR_RW_UNCONDITIONALLY (dr) = -1;
-       }
-      predicate_bbs (loop);
+  for (i = 0; refs->iterate (i, &dr); i++)
+    {
+      dr->aux = XNEW (struct ifc_dr);
+      DR_WRITTEN_AT_LEAST_ONCE (dr) = -1;
+      DR_RW_UNCONDITIONALLY (dr) = -1;
     }
+  predicate_bbs (loop);
 
   for (i = 0; i < loop->num_nodes; i++)
     {
@@ -1323,9 +1320,8 @@ if_convertible_loop_p_1 (struct loop *loop,
            return false;
     }
 
-  if (flag_tree_loop_if_convert_stores)
-    for (i = 0; i < loop->num_nodes; i++)
-      free_bb_predicate (ifc_bbs[i]);
+  for (i = 0; i < loop->num_nodes; i++)
+    free_bb_predicate (ifc_bbs[i]);
 
   /* Checking PHIs needs to be done after stmts, as the fact whether there
      are any masked loads or stores affects the tests.  */
@@ -1399,14 +1395,10 @@ if_convertible_loop_p (struct loop *loop, bool *any_mask_load_store)
   res = if_convertible_loop_p_1 (loop, &loop_nest, &refs, &ddrs,
                                 any_mask_load_store);
 
-  if (flag_tree_loop_if_convert_stores)
-    {
-      data_reference_p dr;
-      unsigned int i;
-
-      for (i = 0; refs.iterate (i, &dr); i++)
-       free (dr->aux);
-    }
+  data_reference_p dr;
+  unsigned int i;
+  for (i = 0; refs.iterate (i, &dr); i++)
+    free (dr->aux);
 
   free_data_refs (refs);
   free_dependence_relations (ddrs);