re PR tree-optimization/37416 (Failure to return number of loop iterations)
authorJakub Jelinek <jakub@redhat.com>
Tue, 9 Dec 2008 22:47:20 +0000 (23:47 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 9 Dec 2008 22:47:20 +0000 (23:47 +0100)
PR tree-optimization/37416
* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR.

From-SVN: r142616

gcc/ChangeLog
gcc/tree-scalar-evolution.c

index d9d9fd7469689a59d4a96e685579f9fecaff2934..431a97a1aaa53d1d1df15a9775f61e9223bee7d0 100644 (file)
@@ -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.
index 51bbd4bcdcb12b61bf7b10e392d61ec205694144..e3d60e98b2ec4a7dc556b52e6174b9f407486a21 100644 (file)
@@ -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;
     }