aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-if-conv.c36
2 files changed, 21 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9862267..20a1301 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index ef2612c..a1a584b 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -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);