Hi,
I refactored number_of_iterations_exit a little bit. I hope it is helpful.
The idea is to move the call to function dominated_by_p after some sanity 
checks so as to avoid call to it.


Thanks,
-Aditya


2015-05-07  Aditya Kumar  <hiradi...@msn.com>

        * tree-ssa-loop-niter.c (number_of_iterations_exit): Move call to 
dominated_by_p later in the function.

diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 042f8df..3d49bb8 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -1959,11 +1959,6 @@ number_of_iterations_exit (struct loop *loop, edge exit,
   affine_iv iv0, iv1;
   bool safe;
 
-  safe = dominated_by_p (CDI_DOMINATORS, loop->latch, exit->src);
-
-  if (every_iteration && !safe)
-    return false;
-
   niter->assumptions = boolean_false_node;
   last = last_stmt (exit->src);
   if (!last)
@@ -1972,6 +1967,11 @@ number_of_iterations_exit (struct loop *loop, edge exit,
   if (!stmt)
     return false;
 
+  safe = dominated_by_p (CDI_DOMINATORS, loop->latch, exit->src);
+
+  if (every_iteration && !safe)
+    return false;
+
   /* We want the condition for staying inside loop.  */
   code = gimple_cond_code (stmt);
   if (exit->flags & EDGE_TRUE_VALUE)

                                          

Reply via email to