gimple-fold.c (fold_gimple_assign): Remove folding of the comparison in COND_EXPRs.
2015-08-03 Richard Biener <rguenther@suse.de> * gimple-fold.c (fold_gimple_assign): Remove folding of the comparison in COND_EXPRs. From-SVN: r226489
This commit is contained in:
parent
a0c012fda9
commit
5c099d40da
|
@ -1,3 +1,8 @@
|
|||
2015-08-03 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gimple-fold.c (fold_gimple_assign): Remove folding of
|
||||
the comparison in COND_EXPRs.
|
||||
|
||||
2015-08-03 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gimple-match-head.c (gimple_simplify): For [VEC_]COND_EXPRs
|
||||
|
|
|
@ -416,49 +416,11 @@ fold_gimple_assign (gimple_stmt_iterator *si)
|
|||
break;
|
||||
|
||||
case GIMPLE_TERNARY_RHS:
|
||||
/* Try to fold a conditional expression. */
|
||||
if (gimple_assign_rhs_code (stmt) == COND_EXPR)
|
||||
{
|
||||
tree op0 = gimple_assign_rhs1 (stmt);
|
||||
tree tem;
|
||||
bool set = false;
|
||||
location_t cond_loc = gimple_location (stmt);
|
||||
|
||||
if (COMPARISON_CLASS_P (op0))
|
||||
{
|
||||
fold_defer_overflow_warnings ();
|
||||
tem = fold_binary_loc (cond_loc,
|
||||
TREE_CODE (op0), TREE_TYPE (op0),
|
||||
TREE_OPERAND (op0, 0),
|
||||
TREE_OPERAND (op0, 1));
|
||||
/* This is actually a conditional expression, not a GIMPLE
|
||||
conditional statement, however, the valid_gimple_rhs_p
|
||||
test still applies. */
|
||||
set = (tem && is_gimple_condexpr (tem)
|
||||
&& valid_gimple_rhs_p (tem));
|
||||
fold_undefer_overflow_warnings (set, stmt, 0);
|
||||
}
|
||||
else if (is_gimple_min_invariant (op0))
|
||||
{
|
||||
tem = op0;
|
||||
set = true;
|
||||
}
|
||||
else
|
||||
return NULL_TREE;
|
||||
|
||||
if (set)
|
||||
result = fold_build3_loc (cond_loc, COND_EXPR,
|
||||
TREE_TYPE (gimple_assign_lhs (stmt)), tem,
|
||||
gimple_assign_rhs2 (stmt),
|
||||
gimple_assign_rhs3 (stmt));
|
||||
}
|
||||
|
||||
if (!result)
|
||||
result = fold_ternary_loc (loc, subcode,
|
||||
TREE_TYPE (gimple_assign_lhs (stmt)),
|
||||
gimple_assign_rhs1 (stmt),
|
||||
gimple_assign_rhs2 (stmt),
|
||||
gimple_assign_rhs3 (stmt));
|
||||
result = fold_ternary_loc (loc, subcode,
|
||||
TREE_TYPE (gimple_assign_lhs (stmt)),
|
||||
gimple_assign_rhs1 (stmt),
|
||||
gimple_assign_rhs2 (stmt),
|
||||
gimple_assign_rhs3 (stmt));
|
||||
|
||||
if (result)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue