From f8e9d51205091e8ca25cd831fc32671c714bf2f7 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Thu, 11 Nov 2004 21:12:34 +0100 Subject: [PATCH] re PR tree-optimization/17742 (C Optimization error with -O1 on i686) PR tree-optimization/17742 * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle MINUS_EXPR correctly. From-SVN: r90492 --- gcc/ChangeLog | 6 ++++ gcc/tree-scalar-evolution.c | 60 ++++--------------------------------- 2 files changed, 11 insertions(+), 55 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 620cefa952f..7c072a45106 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-11 Zdenek Dvorak + + PR tree-optimization/17742 + * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle + MINUS_EXPR correctly. + 2004-11-11 Sebastian Pop * 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 e26f1da48db..21e020dfb90 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -1185,66 +1185,16 @@ follow_ssa_edge_in_rhs (struct loop *loop, STRIP_TYPE_NOPS (rhs1); 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 = ... - ...". */ -- 2.30.2