------- Comment #4 from jakub at gcc dot gnu dot org  2008-12-09 20:37 -------
Indeed, tuplification bug.  The following makes the testcase vectorizable
again.
gcc 4.3 had:
Symbolic number of iterations is (short unsigned int) y_3(D) + 65534
and so does trunk with this patch:
--- gcc/tree-scalar-evolution.c.jj      2008-11-10 10:28:26.000000000 +0100
+++ gcc/tree-scalar-evolution.c 2008-12-09 21:17:10.000000000 +0100
@@ -1229,6 +1229,18 @@ follow_ssa_edge_in_rhs (struct loop *loo
     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;
     }


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2008-11-22 15:47:53         |2008-12-09 20:37:03
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37416

Reply via email to