re PR tree-optimization/59154 (internal compiler error: tree check: expected ssa_name, have integer_cst)
PR tree-optimization/59154 * tree-ssa-reassoc.c (maybe_optimize_range_tests): When changing rhs1 of a cast and new_op is invariant, fold_convert it. * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Only call simplify_conversion_from_bitmask if rhs1 is a SSA_NAME. From-SVN: r205307
This commit is contained in:
parent
b84acf541b
commit
e07ded7bf9
3 changed files with 19 additions and 4 deletions
|
@ -1,3 +1,11 @@
|
|||
2013-11-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/59154
|
||||
* tree-ssa-reassoc.c (maybe_optimize_range_tests): When changing
|
||||
rhs1 of a cast and new_op is invariant, fold_convert it.
|
||||
* tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Only call
|
||||
simplify_conversion_from_bitmask if rhs1 is a SSA_NAME.
|
||||
|
||||
2013-11-23 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/56788
|
||||
|
|
|
@ -3548,7 +3548,8 @@ ssa_forward_propagate_and_combine (void)
|
|||
{
|
||||
tree outer_type = TREE_TYPE (gimple_assign_lhs (stmt));
|
||||
tree inner_type = TREE_TYPE (gimple_assign_rhs1 (stmt));
|
||||
if (INTEGRAL_TYPE_P (outer_type)
|
||||
if (TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME
|
||||
&& INTEGRAL_TYPE_P (outer_type)
|
||||
&& INTEGRAL_TYPE_P (inner_type)
|
||||
&& (TYPE_PRECISION (outer_type)
|
||||
<= TYPE_PRECISION (inner_type)))
|
||||
|
|
|
@ -2935,9 +2935,15 @@ maybe_optimize_range_tests (gimple stmt)
|
|||
tree new_lhs = make_ssa_name (TREE_TYPE (lhs), NULL);
|
||||
enum tree_code rhs_code
|
||||
= gimple_assign_rhs_code (cast_stmt);
|
||||
gimple g
|
||||
= gimple_build_assign_with_ops (rhs_code, new_lhs,
|
||||
new_op, NULL_TREE);
|
||||
gimple g;
|
||||
if (is_gimple_min_invariant (new_op))
|
||||
{
|
||||
new_op = fold_convert (TREE_TYPE (lhs), new_op);
|
||||
g = gimple_build_assign (new_lhs, new_op);
|
||||
}
|
||||
else
|
||||
g = gimple_build_assign_with_ops (rhs_code, new_lhs,
|
||||
new_op, NULL_TREE);
|
||||
gimple_stmt_iterator gsi = gsi_for_stmt (cast_stmt);
|
||||
gimple_set_uid (g, gimple_uid (cast_stmt));
|
||||
gimple_set_visited (g, true);
|
||||
|
|
Loading…
Add table
Reference in a new issue