tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Refactor the code.
* tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Refactor the code. Handle type conversion. From-SVN: r204695
This commit is contained in:
parent
97a23b7475
commit
801a661c44
2 changed files with 28 additions and 18 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-11-12 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
* tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Refactor the code.
|
||||
Handle type conversion.
|
||||
|
||||
2013-11-11 Martin Liska <marxin.liska@gmail.com>
|
||||
Jan Hubicka <jh@suse.cz>
|
||||
|
||||
|
|
|
@ -3608,30 +3608,13 @@ force_expr_to_var_cost (tree expr, bool speed)
|
|||
op1 = TREE_OPERAND (expr, 1);
|
||||
STRIP_NOPS (op0);
|
||||
STRIP_NOPS (op1);
|
||||
|
||||
if (is_gimple_val (op0))
|
||||
cost0 = no_cost;
|
||||
else
|
||||
cost0 = force_expr_to_var_cost (op0, speed);
|
||||
|
||||
if (is_gimple_val (op1))
|
||||
cost1 = no_cost;
|
||||
else
|
||||
cost1 = force_expr_to_var_cost (op1, speed);
|
||||
|
||||
break;
|
||||
|
||||
CASE_CONVERT:
|
||||
case NEGATE_EXPR:
|
||||
op0 = TREE_OPERAND (expr, 0);
|
||||
STRIP_NOPS (op0);
|
||||
op1 = NULL_TREE;
|
||||
|
||||
if (is_gimple_val (op0))
|
||||
cost0 = no_cost;
|
||||
else
|
||||
cost0 = force_expr_to_var_cost (op0, speed);
|
||||
|
||||
cost1 = no_cost;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -3639,6 +3622,18 @@ force_expr_to_var_cost (tree expr, bool speed)
|
|||
return new_cost (target_spill_cost[speed], 0);
|
||||
}
|
||||
|
||||
if (op0 == NULL_TREE
|
||||
|| TREE_CODE (op0) == SSA_NAME || CONSTANT_CLASS_P (op0))
|
||||
cost0 = no_cost;
|
||||
else
|
||||
cost0 = force_expr_to_var_cost (op0, speed);
|
||||
|
||||
if (op1 == NULL_TREE
|
||||
|| TREE_CODE (op1) == SSA_NAME || CONSTANT_CLASS_P (op1))
|
||||
cost1 = no_cost;
|
||||
else
|
||||
cost1 = force_expr_to_var_cost (op1, speed);
|
||||
|
||||
mode = TYPE_MODE (TREE_TYPE (expr));
|
||||
switch (TREE_CODE (expr))
|
||||
{
|
||||
|
@ -3664,6 +3659,16 @@ force_expr_to_var_cost (tree expr, bool speed)
|
|||
}
|
||||
break;
|
||||
|
||||
CASE_CONVERT:
|
||||
{
|
||||
tree inner_mode, outer_mode;
|
||||
outer_mode = TREE_TYPE (expr);
|
||||
inner_mode = TREE_TYPE (op0);
|
||||
cost = new_cost (convert_cost (TYPE_MODE (outer_mode),
|
||||
TYPE_MODE (inner_mode), speed), 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case MULT_EXPR:
|
||||
if (cst_and_fits_in_hwi (op0))
|
||||
cost = new_cost (mult_by_coeff_cost (int_cst_value (op0),
|
||||
|
|
Loading…
Add table
Reference in a new issue