Commit f2c9f71d by Thomas Schwinge Committed by Thomas Schwinge

Refactor omp_reduction_init: omp_reduction_init_op

	gcc/
	* omp-low.h (omp_reduction_init_op): Declare.
	* omp-low.c (omp_reduction_init_op): New, broken out of ...
	(omp_reduction_init): ... here.  Call it.
	* tree-parloops.c (initialize_reductions): Use
	omp_reduction_init_op.

Co-Authored-By: Nathan Sidwell <nathan@codesourcery.com>

From-SVN: r228052
parent ef537cc8
2015-09-23 Thomas Schwinge <thomas@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* omp-low.h (omp_reduction_init_op): Declare.
* omp-low.c (omp_reduction_init_op): New, broken out of ...
(omp_reduction_init): ... here. Call it.
* tree-parloops.c (initialize_reductions): Use
omp_reduction_init_op.
2015-09-23 Richard Biener <rguenther@suse.de> 2015-09-23 Richard Biener <rguenther@suse.de>
PR middle-end/67662 PR middle-end/67662
...@@ -3372,13 +3372,12 @@ maybe_lookup_decl_in_outer_ctx (tree decl, omp_context *ctx) ...@@ -3372,13 +3372,12 @@ maybe_lookup_decl_in_outer_ctx (tree decl, omp_context *ctx)
} }
/* Construct the initialization value for reduction CLAUSE. */ /* Construct the initialization value for reduction operation OP. */
tree tree
omp_reduction_init (tree clause, tree type) omp_reduction_init_op (location_t loc, enum tree_code op, tree type)
{ {
location_t loc = OMP_CLAUSE_LOCATION (clause); switch (op)
switch (OMP_CLAUSE_REDUCTION_CODE (clause))
{ {
case PLUS_EXPR: case PLUS_EXPR:
case MINUS_EXPR: case MINUS_EXPR:
...@@ -3451,6 +3450,15 @@ omp_reduction_init (tree clause, tree type) ...@@ -3451,6 +3450,15 @@ omp_reduction_init (tree clause, tree type)
} }
} }
/* Construct the initialization value for reduction CLAUSE. */
tree
omp_reduction_init (tree clause, tree type)
{
return omp_reduction_init_op (OMP_CLAUSE_LOCATION (clause),
OMP_CLAUSE_REDUCTION_CODE (clause), type);
}
/* Return alignment to be assumed for var in CLAUSE, which should be /* Return alignment to be assumed for var in CLAUSE, which should be
OMP_CLAUSE_ALIGNED. */ OMP_CLAUSE_ALIGNED. */
......
...@@ -25,6 +25,7 @@ struct omp_region; ...@@ -25,6 +25,7 @@ struct omp_region;
extern tree find_omp_clause (tree, enum omp_clause_code); extern tree find_omp_clause (tree, enum omp_clause_code);
extern void omp_expand_local (basic_block); extern void omp_expand_local (basic_block);
extern void free_omp_regions (void); extern void free_omp_regions (void);
extern tree omp_reduction_init_op (location_t, enum tree_code, tree);
extern tree omp_reduction_init (tree, tree); extern tree omp_reduction_init (tree, tree);
extern bool make_gimple_omp_edges (basic_block, struct omp_region **, int *); extern bool make_gimple_omp_edges (basic_block, struct omp_region **, int *);
extern void omp_finish_file (void); extern void omp_finish_file (void);
......
...@@ -565,8 +565,8 @@ reduc_stmt_res (gimple *stmt) ...@@ -565,8 +565,8 @@ reduc_stmt_res (gimple *stmt)
int int
initialize_reductions (reduction_info **slot, struct loop *loop) initialize_reductions (reduction_info **slot, struct loop *loop)
{ {
tree init, c; tree init;
tree bvar, type, arg; tree type, arg;
edge e; edge e;
struct reduction_info *const reduc = *slot; struct reduction_info *const reduc = *slot;
...@@ -577,16 +577,10 @@ initialize_reductions (reduction_info **slot, struct loop *loop) ...@@ -577,16 +577,10 @@ initialize_reductions (reduction_info **slot, struct loop *loop)
/* In the phi node at the header, replace the argument coming /* In the phi node at the header, replace the argument coming
from the preheader with the reduction initialization value. */ from the preheader with the reduction initialization value. */
/* Create a new variable to initialize the reduction. */ /* Initialize the reduction. */
type = TREE_TYPE (PHI_RESULT (reduc->reduc_phi)); type = TREE_TYPE (PHI_RESULT (reduc->reduc_phi));
bvar = create_tmp_var (type, "reduction"); init = omp_reduction_init_op (gimple_location (reduc->reduc_stmt),
reduc->reduction_code, type);
c = build_omp_clause (gimple_location (reduc->reduc_stmt),
OMP_CLAUSE_REDUCTION);
OMP_CLAUSE_REDUCTION_CODE (c) = reduc->reduction_code;
OMP_CLAUSE_DECL (c) = SSA_NAME_VAR (reduc_stmt_res (reduc->reduc_stmt));
init = omp_reduction_init (c, TREE_TYPE (bvar));
reduc->init = init; reduc->init = init;
/* Replace the argument representing the initialization value /* Replace the argument representing the initialization value
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment