From 18d11814af15e35f3cb103919585bceb5c470dc7 Mon Sep 17 00:00:00 2001 From: Alan Lawrence Date: Fri, 14 Nov 2014 17:20:40 +0000 Subject: [PATCH] [Vectorizer] Tidy up vect_create_epilog / use_scalar_result * tree-vect-loop.c (vect_create_epilog_for_reduction): Move code for 'if (extract_scalar_result)' to the only place that it is true. From-SVN: r217580 --- gcc/ChangeLog | 5 +++++ gcc/tree-vect-loop.c | 40 ++++++++++++++++------------------------ 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb993d2158d..48366abe76b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-11-14 Alan Lawrence + + * tree-vect-loop.c (vect_create_epilog_for_reduction): Move code for + 'if (extract_scalar_result)' to the only place that it is true. + 2014-11-14 H.J. Lu * config.gcc (default_gnu_indirect_function): Set to yes diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 5e66dcf5354..70405d86f34 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -3914,7 +3914,6 @@ vect_create_epilog_for_reduction (vec vect_defs, gimple stmt, tree orig_name, scalar_result; imm_use_iterator imm_iter, phi_imm_iter; use_operand_p use_p, phi_use_p; - bool extract_scalar_result = false; gimple use_stmt, orig_stmt, reduction_phi = NULL; bool nested_in_vect_loop = false; auto_vec new_phis; @@ -4281,6 +4280,8 @@ vect_create_epilog_for_reduction (vec vect_defs, gimple stmt, Create: va = vop } */ + tree rhs; + if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, "Reduce using vector shifts\n"); @@ -4307,7 +4308,20 @@ vect_create_epilog_for_reduction (vec vect_defs, gimple stmt, gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT); } - extract_scalar_result = true; + /* 2.4 Extract the final scalar result. Create: + s_out3 = extract_field */ + + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "extract scalar result\n"); + + rhs = build3 (BIT_FIELD_REF, scalar_type, new_temp, + bitsize, bitsize_zero_node); + epilog_stmt = gimple_build_assign (new_scalar_dest, rhs); + new_temp = make_ssa_name (new_scalar_dest, epilog_stmt); + gimple_assign_set_lhs (epilog_stmt, new_temp); + gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT); + scalar_results.safe_push (new_temp); } else { @@ -4401,30 +4415,8 @@ vect_create_epilog_for_reduction (vec vect_defs, gimple stmt, else /* Not SLP - we have one scalar to keep in SCALAR_RESULTS. */ scalar_results.safe_push (new_temp); - - extract_scalar_result = false; } } - - /* 2.4 Extract the final scalar result. Create: - s_out3 = extract_field */ - - if (extract_scalar_result) - { - tree rhs; - - if (dump_enabled_p ()) - dump_printf_loc (MSG_NOTE, vect_location, - "extract scalar result\n"); - - rhs = build3 (BIT_FIELD_REF, scalar_type, - new_temp, bitsize, bitsize_zero_node); - epilog_stmt = gimple_build_assign (new_scalar_dest, rhs); - new_temp = make_ssa_name (new_scalar_dest, epilog_stmt); - gimple_assign_set_lhs (epilog_stmt, new_temp); - gsi_insert_before (&exit_gsi, epilog_stmt, GSI_SAME_STMT); - scalar_results.safe_push (new_temp); - } vect_finalize_reduction: -- 2.30.2