diff options
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/tree-scalar-evolution.c | 60 |
2 files changed, 11 insertions, 55 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 620cefa..7c072a4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-11 Zdenek Dvorak <dvorakz@suse.cz> + + PR tree-optimization/17742 + * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle + MINUS_EXPR correctly. + 2004-11-11 Sebastian Pop <pop@cri.ensmp.fr> * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi): diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index e26f1da..21e020d 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -1186,65 +1186,15 @@ follow_ssa_edge_in_rhs (struct loop *loop, if (TREE_CODE (rhs0) == SSA_NAME) { - if (TREE_CODE (rhs1) == SSA_NAME) - { - /* Match an assignment under the form: - "a = b - c". */ - res = follow_ssa_edge - (loop, SSA_NAME_DEF_STMT (rhs0), halting_phi, - evolution_of_loop); - - if (res) - *evolution_of_loop = add_to_evolution - (loop->num, chrec_convert (type_rhs, *evolution_of_loop), - MINUS_EXPR, rhs1); - - else - { - res = follow_ssa_edge - (loop, SSA_NAME_DEF_STMT (rhs1), halting_phi, - evolution_of_loop); - - if (res) - *evolution_of_loop = add_to_evolution - (loop->num, - chrec_fold_multiply (type_rhs, - *evolution_of_loop, - build_int_cst_type (type_rhs, -1)), - PLUS_EXPR, rhs0); - } - } - - else - { - /* Match an assignment under the form: - "a = b - ...". */ - res = follow_ssa_edge - (loop, SSA_NAME_DEF_STMT (rhs0), halting_phi, - evolution_of_loop); - if (res) - *evolution_of_loop = add_to_evolution - (loop->num, chrec_convert (type_rhs, *evolution_of_loop), - MINUS_EXPR, rhs1); - } - } - - else if (TREE_CODE (rhs1) == SSA_NAME) - { /* Match an assignment under the form: - "a = ... - c". */ - res = follow_ssa_edge - (loop, SSA_NAME_DEF_STMT (rhs1), halting_phi, - evolution_of_loop); + "a = b - ...". */ + res = follow_ssa_edge (loop, SSA_NAME_DEF_STMT (rhs0), halting_phi, + evolution_of_loop); if (res) *evolution_of_loop = add_to_evolution - (loop->num, - chrec_fold_multiply (type_rhs, - *evolution_of_loop, - build_int_cst_type (type_rhs, -1)), - PLUS_EXPR, rhs0); + (loop->num, chrec_convert (type_rhs, *evolution_of_loop), + MINUS_EXPR, rhs1); } - else /* Otherwise, match an assignment under the form: "a = ... - ...". */ |
