OSDN Git Service

2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Aug 2009 20:24:51 +0000 (20:24 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Aug 2009 20:24:51 +0000 (20:24 +0000)
* cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
bounds with LT_EXPR to make niter analysis more precise on code
generated by Graphite.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151180 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ChangeLog.graphite
gcc/cfgloopmanip.c

index 8ce1105..0105250 100644 (file)
@@ -1,5 +1,11 @@
 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
 
+       * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
+       bounds with LT_EXPR to make niter analysis more precise on code
+       generated by Graphite.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
        * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
        (graphite_legal_transform_bb): Same.
        (poly_drs_may_alias_p): Same.
index 662e085..d7d1a6a 100644 (file)
@@ -1,5 +1,11 @@
 2009-08-18  Sebastian Pop  <sebastian.pop@amd.com>
 
+       * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
+       bounds with LT_EXPR to make niter analysis more precise on code
+       generated by Graphite.
+
+2009-08-18  Sebastian Pop  <sebastian.pop@amd.com>
+
        * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
        (graphite_legal_transform_bb): Same.
        (poly_drs_may_alias_p): Same.
index 40e3f8e..a357a2f 100644 (file)
@@ -599,7 +599,7 @@ create_empty_if_region_on_edge (edge entry_edge, tree condition)
    |   |           |               |         |
    |    -----------                |      ---V--- loop_body ---------------
    |                               |     | iv_after = iv_before + stride   |
-   |                               |     | if (iv_after <= upper_bound)     |
+   |                               |     | if (iv_before < upper_bound)    |
    |                               |      ---|--------------\--------------
    |                               |         |               \ exit_e
    |                               |         V                \
@@ -609,9 +609,9 @@ create_empty_if_region_on_edge (edge entry_edge, tree condition)
    |                                \ ___ /
 
    Creates an empty loop as shown above, the IV_BEFORE is the SSA_NAME
-   that is used before the increment of IV. IV_BEFORE should be used for 
+   that is used before the increment of IV. IV_BEFORE should be used for
    adding code to the body that uses the IV.  OUTER is the outer loop in
-   which the new loop should be inserted.  
+   which the new loop should be inserted.
 
    Both INITIAL_VALUE and UPPER_BOUND expressions are gimplified and
    inserted on the loop entry edge.  This implies that this function
@@ -619,7 +619,7 @@ create_empty_if_region_on_edge (edge entry_edge, tree condition)
    invariant.  */
 
 struct loop *
-create_empty_loop_on_edge (edge entry_edge, 
+create_empty_loop_on_edge (edge entry_edge,
                           tree initial_value,
                           tree stride, tree upper_bound,
                           tree iv,
@@ -637,7 +637,7 @@ create_empty_loop_on_edge (edge entry_edge,
   tree exit_test;
   edge exit_e;
   int prob;
-  
+
   gcc_assert (entry_edge && initial_value && stride && upper_bound && iv);
 
   /* Create header, latch and wire up the loop.  */
@@ -696,7 +696,7 @@ create_empty_loop_on_edge (edge entry_edge,
 
   /* Insert loop exit condition.  */
   cond_expr = gimple_build_cond
-    (LE_EXPR, *iv_after, upper_bound, NULL_TREE, NULL_TREE);
+    (LT_EXPR, *iv_before, upper_bound, NULL_TREE, NULL_TREE);
 
   exit_test = gimple_cond_lhs (cond_expr);
   exit_test = force_gimple_operand_gsi (&gsi, exit_test, true, NULL,