---------------------------------------- > Date: Sat, 18 Jul 2015 02:22:19 +0200 > From: tob...@grosser.es > To: hiradi...@msn.com; gcc-patches@gcc.gnu.org > CC: seb...@gmail.com; richard.guent...@gmail.com > Subject: Re: [PATCH] Rename parameters which are within scop > > Hi Aditya, > > could you possible expand the commit message a little bit to explain > what you are doing?
My bad, I sent a different patch which did not have the updated commit message. I have send another patch (https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01614.html) which has comments and the email title is also relevant to the change. Sorry for the confusion. -Aditya > > Tobias > > > On 07/18/2015 01:00 AM, Aditya Kumar wrote:> --- >> gcc/graphite-isl-ast-to-gimple.c | 153 >> +++++++++++++++++++++++++++++++-------- >> 1 file changed, 122 insertions(+), 31 deletions(-) >> >> diff --git a/gcc/graphite-isl-ast-to-gimple.c >> b/gcc/graphite-isl-ast-to-gimple.c >> index b32781a..3e2c1fa 100644 >> --- a/gcc/graphite-isl-ast-to-gimple.c >> +++ b/gcc/graphite-isl-ast-to-gimple.c >> @@ -124,9 +124,84 @@ void ivs_params_clear (ivs_params &ip) >> } >> } >> >> -static tree >> -gcc_expression_from_isl_expression (tree type, __isl_take isl_ast_expr *, >> - ivs_params &ip); >> +class translate_isl_ast_to_gimple >> +{ >> +public: >> + translate_isl_ast_to_gimple (sese r) >> + : region (r) >> + { } >> + >> + edge translate_isl_ast (loop_p context_loop, __isl_keep isl_ast_node *node, >> + edge next_e, ivs_params &ip); >> + >> + edge translate_isl_ast_node_for (loop_p context_loop, >> + __isl_keep isl_ast_node *node, >> + edge next_e, ivs_params &ip); >> + >> + edge translate_isl_ast_for_loop (loop_p context_loop, >> + __isl_keep isl_ast_node *node_for, >> + edge next_e, >> + tree type, tree lb, tree ub, >> + ivs_params &ip); >> + >> + edge translate_isl_ast_node_if (loop_p context_loop, >> + __isl_keep isl_ast_node *node, >> + edge next_e, ivs_params &ip); >> + >> + edge translate_isl_ast_node_user (__isl_keep isl_ast_node *node, >> + edge next_e, ivs_params &ip); >> + >> + edge translate_isl_ast_node_block (loop_p context_loop, >> + __isl_keep isl_ast_node *node, >> + edge next_e, ivs_params &ip); >> + >> + tree unary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, >> + ivs_params &ip); >> + >> + tree binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, >> + ivs_params &ip); >> + >> + tree ternary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, >> + ivs_params &ip); >> + >> + tree nary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, >> + ivs_params &ip); >> + >> + tree gcc_expression_from_isl_expression (tree type, >> + __isl_take isl_ast_expr *, >> + ivs_params &ip); >> + >> + tree gcc_expression_from_isl_ast_expr_id (tree type, >> + __isl_keep isl_ast_expr *expr_id, >> + ivs_params &ip); >> + >> + tree gcc_expression_from_isl_expr_int (tree type, >> + __isl_take isl_ast_expr *expr); >> + >> + tree gcc_expression_from_isl_expr_op (tree type, >> + __isl_take isl_ast_expr *expr, >> + ivs_params &ip); >> + >> + struct loop *graphite_create_new_loop (edge entry_edge, >> + __isl_keep isl_ast_node *node_for, >> + loop_p outer, tree type, >> + tree lb, tree ub, ivs_params &ip); >> + >> + edge graphite_create_new_guard (edge entry_edge, >> + __isl_take isl_ast_expr *if_cond, >> + ivs_params &ip); >> + >> + edge graphite_create_new_loop_guard (edge entry_edge, >> + __isl_keep isl_ast_node *node_for, >> + tree *type, >> + tree *lb, tree *ub, ivs_params &ip); >> + >> + void build_iv_mapping (vec<tree> iv_map, gimple_bb_p gbb, >> + __isl_keep isl_ast_expr *user_expr, ivs_params &ip, >> + sese region); >> +private: >> + sese region; >> +}; >> >> /* Return the tree variable that corresponds to the given isl ast identifier >> expression (an isl_ast_expr of type isl_ast_expr_id). >> @@ -136,7 +211,8 @@ gcc_expression_from_isl_expression (tree type, >> __isl_take isl_ast_expr *, >> converting type sizes may be problematic when we switch to smaller >> types. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> gcc_expression_from_isl_ast_expr_id (tree type, >> __isl_keep isl_ast_expr *expr_id, >> ivs_params &ip) >> @@ -147,7 +223,7 @@ gcc_expression_from_isl_ast_expr_id (tree type, >> res = ip.find (tmp_isl_id); >> isl_id_free (tmp_isl_id); >> gcc_assert (res != ip.end () && >> - "Could not map isl_id to tree expression"); >> + "Could not map isl_id to tree expression"); >> isl_ast_expr_free (expr_id); >> return fold_convert (type, res->second); >> } >> @@ -155,7 +231,8 @@ gcc_expression_from_isl_ast_expr_id (tree type, >> /* Converts an isl_ast_expr_int expression E to a GCC expression tree of >> type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> gcc_expression_from_isl_expr_int (tree type, __isl_take isl_ast_expr *expr) >> { >> gcc_assert (isl_ast_expr_get_type (expr) == isl_ast_expr_int); >> @@ -176,7 +253,8 @@ gcc_expression_from_isl_expr_int (tree type, __isl_take >> isl_ast_expr *expr) >> /* Converts a binary isl_ast_expr_op expression E to a GCC expression tree of >> type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip) >> { >> isl_ast_expr *arg_expr = isl_ast_expr_get_op_arg (expr, 0); >> @@ -238,7 +316,8 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr >> *expr, ivs_params &ip) >> /* Converts a ternary isl_ast_expr_op expression E to a GCC expression tree >> of >> type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> ternary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip) >> { >> gcc_assert (isl_ast_expr_get_op_type (expr) == isl_ast_op_minus); >> @@ -259,7 +338,8 @@ ternary_op_to_tree (tree type, __isl_take isl_ast_expr >> *expr, ivs_params &ip) >> /* Converts a unary isl_ast_expr_op expression E to a GCC expression tree of >> type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> unary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip) >> { >> gcc_assert (isl_ast_expr_get_op_type (expr) == isl_ast_op_minus); >> @@ -272,7 +352,8 @@ unary_op_to_tree (tree type, __isl_take isl_ast_expr >> *expr, ivs_params &ip) >> /* Converts an isl_ast_expr_op expression E with unknown number of arguments >> to a GCC expression tree of type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> nary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip) >> { >> enum tree_code op_code; >> @@ -306,7 +387,8 @@ nary_op_to_tree (tree type, __isl_take isl_ast_expr >> *expr, ivs_params &ip) >> /* Converts an isl_ast_expr_op expression E to a GCC expression tree of >> type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr, >> ivs_params &ip) >> { >> @@ -357,7 +439,8 @@ gcc_expression_from_isl_expr_op (tree type, __isl_take >> isl_ast_expr *expr, >> /* Converts an ISL AST expression E back to a GCC expression tree of >> type TYPE. */ >> >> -static tree >> +tree >> +translate_isl_ast_to_gimple:: >> gcc_expression_from_isl_expression (tree type, __isl_take isl_ast_expr *expr, >> ivs_params &ip) >> { >> @@ -387,7 +470,8 @@ gcc_expression_from_isl_expression (tree type, >> __isl_take isl_ast_expr *expr, >> loop of STMT. The new induction variable is inserted in the NEWIVS >> vector and is of type TYPE. */ >> >> -static struct loop * >> +struct loop * >> +translate_isl_ast_to_gimple:: >> graphite_create_new_loop (edge entry_edge, __isl_keep isl_ast_node *node_for, >> loop_p outer, tree type, tree lb, tree ub, >> ivs_params &ip) >> @@ -411,15 +495,12 @@ graphite_create_new_loop (edge entry_edge, __isl_keep >> isl_ast_node *node_for, >> return loop; >> } >> >> -static edge >> -translate_isl_ast (loop_p context_loop, __isl_keep isl_ast_node *node, >> - edge next_e, ivs_params &ip); >> - >> /* Create the loop for a isl_ast_node_for. >> >> - NEXT_E is the edge where new generated code should be attached. */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> translate_isl_ast_for_loop (loop_p context_loop, >> __isl_keep isl_ast_node *node_for, edge next_e, >> tree type, tree lb, tree ub, >> @@ -523,7 +604,8 @@ get_upper_bound (__isl_keep isl_ast_node *node_for) >> We create a new if region protecting the loop to be executed, if >> the execution count is zero (lower bound> upper bound). */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> graphite_create_new_loop_guard (edge entry_edge, >> __isl_keep isl_ast_node *node_for, tree *type, >> tree *lb, tree *ub, ivs_params &ip) >> @@ -565,7 +647,8 @@ graphite_create_new_loop_guard (edge entry_edge, >> >> /* Translates an isl_ast_node_for to Gimple. */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> translate_isl_ast_node_for (loop_p context_loop, __isl_keep isl_ast_node >> *node, >> edge next_e, ivs_params &ip) >> { >> @@ -587,20 +670,21 @@ translate_isl_ast_node_for (loop_p context_loop, >> __isl_keep isl_ast_node *node, >> chrec, we could consider using a map<int, tree> that maps loop ids to the >> corresponding tree expressions. */ >> >> -static void >> +void >> +translate_isl_ast_to_gimple:: >> build_iv_mapping (vec<tree> iv_map, gimple_bb_p gbb, >> __isl_keep isl_ast_expr *user_expr, ivs_params &ip, >> sese region) >> { >> gcc_assert (isl_ast_expr_get_type (user_expr) == isl_ast_expr_op && >> - isl_ast_expr_get_op_type (user_expr) == isl_ast_op_call); >> + isl_ast_expr_get_op_type (user_expr) == isl_ast_op_call); >> int i; >> isl_ast_expr *arg_expr; >> for (i = 1; i < isl_ast_expr_get_op_n_arg (user_expr); i++) >> { >> arg_expr = isl_ast_expr_get_op_arg (user_expr, i); >> tree type = >> - build_nonstandard_integer_type (graphite_expression_type_precision, 0); >> + build_nonstandard_integer_type (graphite_expression_type_precision, 0); >> tree t = gcc_expression_from_isl_expression (type, arg_expr, ip); >> loop_p old_loop = gbb_loop_at_index (gbb, region, i - 1); >> iv_map[old_loop->num] = t; >> @@ -612,7 +696,8 @@ build_iv_mapping (vec<tree> iv_map, gimple_bb_p gbb, >> >> FIXME: We should remove iv_map.create (loop->num + 1), if it is possible. */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> translate_isl_ast_node_user (__isl_keep isl_ast_node *node, >> edge next_e, ivs_params &ip) >> { >> @@ -649,7 +734,8 @@ translate_isl_ast_node_user (__isl_keep isl_ast_node >> *node, >> >> /* Translates an isl_ast_node_block to Gimple. */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> translate_isl_ast_node_block (loop_p context_loop, >> __isl_keep isl_ast_node *node, >> edge next_e, ivs_params &ip) >> @@ -669,7 +755,8 @@ translate_isl_ast_node_block (loop_p context_loop, >> >> /* Creates a new if region corresponding to ISL's cond. */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> graphite_create_new_guard (edge entry_edge, __isl_take isl_ast_expr *if_cond, >> ivs_params &ip) >> { >> @@ -682,7 +769,8 @@ graphite_create_new_guard (edge entry_edge, __isl_take >> isl_ast_expr *if_cond, >> >> /* Translates an isl_ast_node_if to Gimple. */ >> >> -static edge >> +edge >> +translate_isl_ast_to_gimple:: >> translate_isl_ast_node_if (loop_p context_loop, >> __isl_keep isl_ast_node *node, >> edge next_e, ivs_params &ip) >> @@ -707,9 +795,10 @@ translate_isl_ast_node_if (loop_p context_loop, >> /* Translates an ISL AST node NODE to GCC representation in the >> context of a SESE. */ >> >> -static edge >> -translate_isl_ast (loop_p context_loop, __isl_keep isl_ast_node *node, >> - edge next_e, ivs_params &ip) >> +edge >> +translate_isl_ast_to_gimple::translate_isl_ast (loop_p context_loop, >> + __isl_keep isl_ast_node *node, >> + edge next_e, ivs_params &ip) >> { >> switch (isl_ast_node_get_type (node)) >> { >> @@ -1049,7 +1138,9 @@ graphite_regenerate_ast_isl (scop_p scop) >> >> context_loop = SESE_ENTRY (region)->src->loop_father; >> >> - translate_isl_ast (context_loop, root_node, if_region->true_region->entry, >> + translate_isl_ast_to_gimple t (region); >> + >> + t.translate_isl_ast (context_loop, root_node, >> if_region->true_region->entry, >> ip); >> >> mark_virtual_operands_for_renaming (cfun); >> >