Commit 62fb67d7 by Richard Biener

gimple-fold.c (fold_gimple_cond): Do not require folding results to pass valid_gimple_rhs_p.

2015-07-23  Richard Biener  <rguenther@suse.de>

	* gimple-fold.c (fold_gimple_cond): Do not require folding
	results to pass valid_gimple_rhs_p.
	* tree-cfg.h (fold_cond_expr_cond): Remove.
	* tree-cfg.c (fold_cond_expr_cond): Likewise.
	(make_edges): Do not call it.
	* tree-inline.c (tree_function_versioning): Likewise.

From-SVN: r226109
parent bcdaf370
2015-07-23 Richard Biener <rguenther@suse.de>
* gimple-fold.c (fold_gimple_cond): Do not require folding
results to pass valid_gimple_rhs_p.
* tree-cfg.h (fold_cond_expr_cond): Remove.
* tree-cfg.c (fold_cond_expr_cond): Likewise.
(make_edges): Do not call it.
* tree-inline.c (tree_function_versioning): Likewise.
2015-07-23 Tom de Vries <tom@codesourcery.com> 2015-07-23 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (gather_scalar_reductions): Add arg to call to * tree-parloops.c (gather_scalar_reductions): Add arg to call to
...@@ -8,7 +17,8 @@ ...@@ -8,7 +17,8 @@
(vect_is_simple_reduction, vect_force_simple_reduction): Add and pass (vect_is_simple_reduction, vect_force_simple_reduction): Add and pass
need_wrapping_integral_overflow parameter. need_wrapping_integral_overflow parameter.
(vectorizable_reduction): Add arg to call to vect_is_simple_reduction. (vectorizable_reduction): Add arg to call to vect_is_simple_reduction.
* tree-vectorizer.h (vect_force_simple_reduction): Add parameter to decl. * tree-vectorizer.h (vect_force_simple_reduction): Add parameter to
decl.
2015-07-23 Yuri Rumyantsev <ysrumyan@gmail.com> 2015-07-23 Yuri Rumyantsev <ysrumyan@gmail.com>
......
...@@ -546,7 +546,7 @@ fold_gimple_cond (gcond *stmt) ...@@ -546,7 +546,7 @@ fold_gimple_cond (gcond *stmt)
if (result) if (result)
{ {
STRIP_USELESS_TYPE_CONVERSION (result); STRIP_USELESS_TYPE_CONVERSION (result);
if (is_gimple_condexpr (result) && valid_gimple_rhs_p (result)) if (is_gimple_condexpr (result))
{ {
gimple_cond_set_condition_from_tree (stmt, result); gimple_cond_set_condition_from_tree (stmt, result);
return true; return true;
......
...@@ -606,48 +606,6 @@ create_bb (void *h, void *e, basic_block after) ...@@ -606,48 +606,6 @@ create_bb (void *h, void *e, basic_block after)
Edge creation Edge creation
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
/* Fold COND_EXPR_COND of each COND_EXPR. */
void
fold_cond_expr_cond (void)
{
basic_block bb;
FOR_EACH_BB_FN (bb, cfun)
{
gimple stmt = last_stmt (bb);
if (stmt && gimple_code (stmt) == GIMPLE_COND)
{
gcond *cond_stmt = as_a <gcond *> (stmt);
location_t loc = gimple_location (stmt);
tree cond;
bool zerop, onep;
fold_defer_overflow_warnings ();
cond = fold_binary_loc (loc, gimple_cond_code (cond_stmt),
boolean_type_node,
gimple_cond_lhs (cond_stmt),
gimple_cond_rhs (cond_stmt));
if (cond)
{
zerop = integer_zerop (cond);
onep = integer_onep (cond);
}
else
zerop = onep = false;
fold_undefer_overflow_warnings (zerop || onep,
stmt,
WARN_STRICT_OVERFLOW_CONDITIONAL);
if (zerop)
gimple_cond_make_false (cond_stmt);
else if (onep)
gimple_cond_make_true (cond_stmt);
}
}
}
/* If basic block BB has an abnormal edge to a basic block /* If basic block BB has an abnormal edge to a basic block
containing IFN_ABNORMAL_DISPATCHER internal call, return containing IFN_ABNORMAL_DISPATCHER internal call, return
that the dispatcher's basic block, otherwise return NULL. */ that the dispatcher's basic block, otherwise return NULL. */
...@@ -1000,9 +958,6 @@ make_edges (void) ...@@ -1000,9 +958,6 @@ make_edges (void)
XDELETE (bb_to_omp_idx); XDELETE (bb_to_omp_idx);
free_omp_regions (); free_omp_regions ();
/* Fold COND_EXPR_COND of each COND_EXPR. */
fold_cond_expr_cond ();
} }
/* Add SEQ after GSI. Start new bb after GSI, and created further bbs as /* Add SEQ after GSI. Start new bb after GSI, and created further bbs as
......
...@@ -31,7 +31,6 @@ extern void gt_pch_nx (edge_def *e, gt_pointer_operator, void *); ...@@ -31,7 +31,6 @@ extern void gt_pch_nx (edge_def *e, gt_pointer_operator, void *);
extern void init_empty_tree_cfg_for_function (struct function *); extern void init_empty_tree_cfg_for_function (struct function *);
extern void init_empty_tree_cfg (void); extern void init_empty_tree_cfg (void);
extern void fold_cond_expr_cond (void);
extern void start_recording_case_labels (void); extern void start_recording_case_labels (void);
extern void end_recording_case_labels (void); extern void end_recording_case_labels (void);
extern basic_block label_to_block_fn (struct function *, tree); extern basic_block label_to_block_fn (struct function *, tree);
......
...@@ -5847,7 +5847,6 @@ tree_function_versioning (tree old_decl, tree new_decl, ...@@ -5847,7 +5847,6 @@ tree_function_versioning (tree old_decl, tree new_decl,
fold_marked_statements (0, id.statements_to_fold); fold_marked_statements (0, id.statements_to_fold);
delete id.statements_to_fold; delete id.statements_to_fold;
fold_cond_expr_cond ();
delete_unreachable_blocks_update_callgraph (&id); delete_unreachable_blocks_update_callgraph (&id);
if (id.dst_node->definition) if (id.dst_node->definition)
cgraph_edge::rebuild_references (); cgraph_edge::rebuild_references ();
......
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