aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-12-09 23:47:20 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2008-12-09 23:47:20 +0100
commit218d1c24bb8bd00b49a4c9097b5777a2c25ba231 (patch)
treea57d35425a8ab0222bfcc0b9532a1d03d7650895
parente2f08cac7b4445742cd679ceedf1016a6e05abc7 (diff)
downloadgcc-218d1c24bb8bd00b49a4c9097b5777a2c25ba231.zip
gcc-218d1c24bb8bd00b49a4c9097b5777a2c25ba231.tar.gz
gcc-218d1c24bb8bd00b49a4c9097b5777a2c25ba231.tar.bz2
re PR tree-optimization/37416 (Failure to return number of loop iterations)
PR tree-optimization/37416 * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR. From-SVN: r142616
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-scalar-evolution.c12
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d9d9fd7..431a97a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/37416
+ * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR.
+
2008-12-09 Janis Johnson <janis187@us.ibm.com>
* doc/sourcebuild.texi (Test Directives): Fix formatting.
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 51bbd4b..e3d60e9 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -1229,6 +1229,18 @@ follow_ssa_edge_in_rhs (struct loop *loop, gimple stmt,
case GIMPLE_SINGLE_RHS:
return follow_ssa_edge_expr (loop, stmt, gimple_assign_rhs1 (stmt),
halting_phi, evolution_of_loop, limit);
+ case GIMPLE_UNARY_RHS:
+ if (code == NOP_EXPR)
+ {
+ /* This assignment is under the form "a_1 = (cast) rhs. */
+ t_bool res
+ = follow_ssa_edge_expr (loop, stmt, gimple_assign_rhs1 (stmt),
+ halting_phi, evolution_of_loop, limit);
+ *evolution_of_loop = chrec_convert (type, *evolution_of_loop, stmt);
+ return res;
+ }
+ /* FALLTHRU */
+
default:
return t_false;
}