Hi,
this patch adds an early-out to gather_scalar_reductions, and further
simplifies the function structure.
Bootstrapped on x86_64. Reg-tested with relevant testcases.
Committed as obvious.
Thanks,
- Tom
Simplify gather_scalar_reductions
2015-07-27 Tom de Vries <t...@codesourcery.com>
* tree-parloops.c (gather_scalar_reductions): Simplify function
structure.
---
gcc/tree-parloops.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 6e75cb1..daf23f2 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -2370,6 +2370,8 @@ gather_scalar_reductions (loop_p loop, reduction_info_table_type *reduction_list
loop_vec_info simple_loop_info;
simple_loop_info = vect_analyze_loop_form (loop);
+ if (simple_loop_info == NULL)
+ return;
for (gsi = gsi_start_phis (loop->header); !gsi_end_p (gsi); gsi_next (&gsi))
{
@@ -2381,15 +2383,16 @@ gather_scalar_reductions (loop_p loop, reduction_info_table_type *reduction_list
if (virtual_operand_p (res))
continue;
- if (!simple_iv (loop, loop, res, &iv, true)
- && simple_loop_info)
- {
- gimple reduc_stmt
- = vect_force_simple_reduction (simple_loop_info, phi, true,
- &double_reduc, true);
- if (reduc_stmt && !double_reduc)
- build_new_reduction (reduction_list, reduc_stmt, phi);
- }
+ if (simple_iv (loop, loop, res, &iv, true))
+ continue;
+
+ gimple reduc_stmt
+ = vect_force_simple_reduction (simple_loop_info, phi, true,
+ &double_reduc, true);
+ if (!reduc_stmt || double_reduc)
+ continue;
+
+ build_new_reduction (reduction_list, reduc_stmt, phi);
}
destroy_loop_vec_info (simple_loop_info, true);
--
1.9.1