This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH] Rename parameters which are within scop



----------------------------------------
> Date: Sat, 18 Jul 2015 02:22:19 +0200
> From: tobias@grosser.es
> To: hiraditya@msn.com; gcc-patches@gcc.gnu.org
> CC: sebpop@gmail.com; richard.guenther@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);
>>
>
 		 	   		  

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]