use codegen_error_p
* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Call codegen_error_p. (ternary_op_to_tree): Same. (unary_op_to_tree): Same. (nary_op_to_tree): Same. (gcc_expression_from_isl_expr_op): Same. (gcc_expression_from_isl_expression): Same. (graphite_create_new_loop): Same. (graphite_create_new_loop_guard): Same. (build_iv_mapping): Same. (graphite_create_new_guard): Same. (translate_isl_ast_to_gimple::copy_loop_phi_nodes): Same. (translate_isl_ast_to_gimple::translate_pending_phi_nodes): Same. From-SVN: r232933
This commit is contained in:
parent
9b496f67e7
commit
0baa616ac8
|
@ -1,3 +1,18 @@
|
||||||
|
2016-01-28 Sebastian Pop <s.pop@samsung.com>
|
||||||
|
|
||||||
|
* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Call codegen_error_p.
|
||||||
|
(ternary_op_to_tree): Same.
|
||||||
|
(unary_op_to_tree): Same.
|
||||||
|
(nary_op_to_tree): Same.
|
||||||
|
(gcc_expression_from_isl_expr_op): Same.
|
||||||
|
(gcc_expression_from_isl_expression): Same.
|
||||||
|
(graphite_create_new_loop): Same.
|
||||||
|
(graphite_create_new_loop_guard): Same.
|
||||||
|
(build_iv_mapping): Same.
|
||||||
|
(graphite_create_new_guard): Same.
|
||||||
|
(translate_isl_ast_to_gimple::copy_loop_phi_nodes): Same.
|
||||||
|
(translate_isl_ast_to_gimple::translate_pending_phi_nodes): Same.
|
||||||
|
|
||||||
2016-01-28 Sebastian Pop <s.pop@samsung.com>
|
2016-01-28 Sebastian Pop <s.pop@samsung.com>
|
||||||
|
|
||||||
* graphite-isl-ast-to-gimple.c (get_rename_from_scev): Assert instead of
|
* graphite-isl-ast-to-gimple.c (get_rename_from_scev): Assert instead of
|
||||||
|
|
|
@ -438,16 +438,14 @@ class translate_isl_ast_to_gimple
|
||||||
vec<tree> iv_map);
|
vec<tree> iv_map);
|
||||||
|
|
||||||
/* Duplicates the statements of basic block BB into basic block NEW_BB
|
/* Duplicates the statements of basic block BB into basic block NEW_BB
|
||||||
and compute the new induction variables according to the IV_MAP.
|
and compute the new induction variables according to the IV_MAP. */
|
||||||
CODEGEN_ERROR is set when the code generation cannot continue. */
|
|
||||||
|
|
||||||
bool graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
|
bool graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
|
||||||
vec<tree> iv_map);
|
vec<tree> iv_map);
|
||||||
|
|
||||||
/* Copies BB and includes in the copied BB all the statements that can
|
/* Copies BB and includes in the copied BB all the statements that can
|
||||||
be reached following the use-def chains from the memory accesses,
|
be reached following the use-def chains from the memory accesses,
|
||||||
and returns the next edge following this new block. codegen_error is
|
and returns the next edge following this new block. */
|
||||||
set when the code generation cannot continue. */
|
|
||||||
|
|
||||||
edge copy_bb_and_scalar_dependences (basic_block bb, edge next_e,
|
edge copy_bb_and_scalar_dependences (basic_block bb, edge next_e,
|
||||||
vec<tree> iv_map);
|
vec<tree> iv_map);
|
||||||
|
@ -480,8 +478,7 @@ class translate_isl_ast_to_gimple
|
||||||
RENAME_MAP, inserting the gimplification code at GSI_TGT, for the
|
RENAME_MAP, inserting the gimplification code at GSI_TGT, for the
|
||||||
translation REGION, with the original copied statement in LOOP, and using
|
translation REGION, with the original copied statement in LOOP, and using
|
||||||
the induction variable renaming map IV_MAP. Returns true when something
|
the induction variable renaming map IV_MAP. Returns true when something
|
||||||
has been renamed. codegen_error is set when the code generation cannot
|
has been renamed. */
|
||||||
continue. */
|
|
||||||
|
|
||||||
bool rename_uses (gimple *copy, gimple_stmt_iterator *gsi_tgt,
|
bool rename_uses (gimple *copy, gimple_stmt_iterator *gsi_tgt,
|
||||||
basic_block old_bb, loop_p loop, vec<tree> iv_map);
|
basic_block old_bb, loop_p loop, vec<tree> iv_map);
|
||||||
|
@ -597,7 +594,7 @@ binary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
enum isl_ast_op_type expr_type = isl_ast_expr_get_op_type (expr);
|
enum isl_ast_op_type expr_type = isl_ast_expr_get_op_type (expr);
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
|
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
|
||||||
switch (expr_type)
|
switch (expr_type)
|
||||||
|
@ -699,7 +696,7 @@ ternary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
tree c = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
tree c = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
|
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
|
||||||
return fold_build3 (COND_EXPR, type, a, b, c);
|
return fold_build3 (COND_EXPR, type, a, b, c);
|
||||||
|
@ -716,7 +713,8 @@ unary_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);
|
isl_ast_expr *arg_expr = isl_ast_expr_get_op_arg (expr, 0);
|
||||||
tree tree_expr = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
tree tree_expr = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
return codegen_error ? NULL_TREE : fold_build1 (NEGATE_EXPR, type, tree_expr);
|
return codegen_error_p () ? NULL_TREE
|
||||||
|
: fold_build1 (NEGATE_EXPR, type, tree_expr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Converts an isl_ast_expr_op expression E with unknown number of arguments
|
/* Converts an isl_ast_expr_op expression E with unknown number of arguments
|
||||||
|
@ -743,7 +741,7 @@ nary_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);
|
isl_ast_expr *arg_expr = isl_ast_expr_get_op_arg (expr, 0);
|
||||||
tree res = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
tree res = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
||||||
|
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
{
|
{
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
@ -755,7 +753,7 @@ nary_op_to_tree (tree type, __isl_take isl_ast_expr *expr, ivs_params &ip)
|
||||||
arg_expr = isl_ast_expr_get_op_arg (expr, i);
|
arg_expr = isl_ast_expr_get_op_arg (expr, i);
|
||||||
tree t = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
tree t = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
||||||
|
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
{
|
{
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
@ -775,7 +773,7 @@ translate_isl_ast_to_gimple::
|
||||||
gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr,
|
gcc_expression_from_isl_expr_op (tree type, __isl_take isl_ast_expr *expr,
|
||||||
ivs_params &ip)
|
ivs_params &ip)
|
||||||
{
|
{
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
{
|
{
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
@ -837,7 +835,7 @@ translate_isl_ast_to_gimple::
|
||||||
gcc_expression_from_isl_expression (tree type, __isl_take isl_ast_expr *expr,
|
gcc_expression_from_isl_expression (tree type, __isl_take isl_ast_expr *expr,
|
||||||
ivs_params &ip)
|
ivs_params &ip)
|
||||||
{
|
{
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
{
|
{
|
||||||
isl_ast_expr_free (expr);
|
isl_ast_expr_free (expr);
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
@ -879,7 +877,7 @@ graphite_create_new_loop (edge entry_edge, __isl_keep isl_ast_node *node_for,
|
||||||
tree stride = gcc_expression_from_isl_expression (type, for_inc, ip);
|
tree stride = gcc_expression_from_isl_expression (type, for_inc, ip);
|
||||||
|
|
||||||
/* To fail code generation, we generate wrong code until we discard it. */
|
/* To fail code generation, we generate wrong code until we discard it. */
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
stride = integer_zero_node;
|
stride = integer_zero_node;
|
||||||
|
|
||||||
tree ivvar = create_tmp_var (type, "graphite_IV");
|
tree ivvar = create_tmp_var (type, "graphite_IV");
|
||||||
|
@ -1025,13 +1023,16 @@ graphite_create_new_loop_guard (edge entry_edge,
|
||||||
build_nonstandard_integer_type (graphite_expression_type_precision, 0);
|
build_nonstandard_integer_type (graphite_expression_type_precision, 0);
|
||||||
isl_ast_expr *for_init = isl_ast_node_for_get_init (node_for);
|
isl_ast_expr *for_init = isl_ast_node_for_get_init (node_for);
|
||||||
*lb = gcc_expression_from_isl_expression (*type, for_init, ip);
|
*lb = gcc_expression_from_isl_expression (*type, for_init, ip);
|
||||||
|
|
||||||
/* To fail code generation, we generate wrong code until we discard it. */
|
/* To fail code generation, we generate wrong code until we discard it. */
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
*lb = integer_zero_node;
|
*lb = integer_zero_node;
|
||||||
|
|
||||||
isl_ast_expr *upper_bound = get_upper_bound (node_for);
|
isl_ast_expr *upper_bound = get_upper_bound (node_for);
|
||||||
*ub = gcc_expression_from_isl_expression (*type, upper_bound, ip);
|
*ub = gcc_expression_from_isl_expression (*type, upper_bound, ip);
|
||||||
|
|
||||||
/* To fail code generation, we generate wrong code until we discard it. */
|
/* To fail code generation, we generate wrong code until we discard it. */
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
*ub = integer_zero_node;
|
*ub = integer_zero_node;
|
||||||
|
|
||||||
/* When ub is simply a constant or a parameter, use lb <= ub. */
|
/* When ub is simply a constant or a parameter, use lb <= ub. */
|
||||||
|
@ -1115,8 +1116,9 @@ build_iv_mapping (vec<tree> iv_map, gimple_poly_bb_p gbb,
|
||||||
tree type =
|
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);
|
tree t = gcc_expression_from_isl_expression (type, arg_expr, ip);
|
||||||
|
|
||||||
/* To fail code generation, we generate wrong code until we discard it. */
|
/* To fail code generation, we generate wrong code until we discard it. */
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
t = integer_zero_node;
|
t = integer_zero_node;
|
||||||
|
|
||||||
loop_p old_loop = gbb_loop_at_index (gbb, region, i - 1);
|
loop_p old_loop = gbb_loop_at_index (gbb, region, i - 1);
|
||||||
|
@ -1216,8 +1218,9 @@ graphite_create_new_guard (edge entry_edge, __isl_take isl_ast_expr *if_cond,
|
||||||
tree type =
|
tree type =
|
||||||
build_nonstandard_integer_type (graphite_expression_type_precision, 0);
|
build_nonstandard_integer_type (graphite_expression_type_precision, 0);
|
||||||
tree cond_expr = gcc_expression_from_isl_expression (type, if_cond, ip);
|
tree cond_expr = gcc_expression_from_isl_expression (type, if_cond, ip);
|
||||||
|
|
||||||
/* To fail code generation, we generate wrong code until we discard it. */
|
/* To fail code generation, we generate wrong code until we discard it. */
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
cond_expr = integer_zero_node;
|
cond_expr = integer_zero_node;
|
||||||
|
|
||||||
edge exit_edge = create_empty_if_region_on_edge (entry_edge, cond_expr);
|
edge exit_edge = create_empty_if_region_on_edge (entry_edge, cond_expr);
|
||||||
|
@ -2159,7 +2162,7 @@ translate_isl_ast_to_gimple::copy_loop_phi_nodes (basic_block bb,
|
||||||
gimple_phi_result_ptr (new_phi));
|
gimple_phi_result_ptr (new_phi));
|
||||||
set_rename (res, new_res);
|
set_rename (res, new_res);
|
||||||
codegen_error = !copy_loop_phi_args (phi, ibp_old_bb, new_phi,
|
codegen_error = !copy_loop_phi_args (phi, ibp_old_bb, new_phi,
|
||||||
ibp_new_bb, true);
|
ibp_new_bb, true);
|
||||||
update_stmt (new_phi);
|
update_stmt (new_phi);
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
|
@ -2808,8 +2811,7 @@ translate_isl_ast_to_gimple::set_rename_for_each_def (gimple *stmt)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicates the statements of basic block BB into basic block NEW_BB
|
/* Duplicates the statements of basic block BB into basic block NEW_BB
|
||||||
and compute the new induction variables according to the IV_MAP.
|
and compute the new induction variables according to the IV_MAP. */
|
||||||
CODEGEN_ERROR is set when the code generation cannot continue. */
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
translate_isl_ast_to_gimple::graphite_copy_stmts_from_block (basic_block bb,
|
translate_isl_ast_to_gimple::graphite_copy_stmts_from_block (basic_block bb,
|
||||||
|
@ -2921,8 +2923,7 @@ translate_isl_ast_to_gimple::edge_for_new_close_phis (basic_block bb)
|
||||||
|
|
||||||
/* Copies BB and includes in the copied BB all the statements that can
|
/* Copies BB and includes in the copied BB all the statements that can
|
||||||
be reached following the use-def chains from the memory accesses,
|
be reached following the use-def chains from the memory accesses,
|
||||||
and returns the next edge following this new block. codegen_error is
|
and returns the next edge following this new block. */
|
||||||
set when the code generation cannot continue. */
|
|
||||||
|
|
||||||
edge
|
edge
|
||||||
translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences (basic_block bb,
|
translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences (basic_block bb,
|
||||||
|
@ -3107,7 +3108,7 @@ translate_isl_ast_to_gimple::translate_pending_phi_nodes ()
|
||||||
fprintf (dump_file, "[codegen] to new-phi: ");
|
fprintf (dump_file, "[codegen] to new-phi: ");
|
||||||
print_gimple_stmt (dump_file, new_phi, 0, 0);
|
print_gimple_stmt (dump_file, new_phi, 0, 0);
|
||||||
}
|
}
|
||||||
if (codegen_error)
|
if (codegen_error_p ())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue