diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-11-23 15:21:46 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-11-23 15:21:46 +0100 |
commit | e07ded7bf92a813f96e6932cca384a83a089f720 (patch) | |
tree | 3588f3e5d92d09b275560f857be2669c3ba82fcb /gcc/tree-ssa-reassoc.c | |
parent | b84acf541bfbc444da9cad9cee0d17c1746b240a (diff) | |
download | gcc-e07ded7bf92a813f96e6932cca384a83a089f720.zip gcc-e07ded7bf92a813f96e6932cca384a83a089f720.tar.gz gcc-e07ded7bf92a813f96e6932cca384a83a089f720.tar.bz2 |
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
Diffstat (limited to 'gcc/tree-ssa-reassoc.c')
-rw-r--r-- | gcc/tree-ssa-reassoc.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index 9daf28f..7145559 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -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); |