Move the creation of anti-dep edge
authorRevital Eres <revital.eres@linaro.org>
Sun, 31 Jul 2011 10:37:35 +0000 (10:37 +0000)
committerRevital Eres <revitale@gcc.gnu.org>
Sun, 31 Jul 2011 10:37:35 +0000 (10:37 +0000)
From-SVN: r176972

gcc/ChangeLog
gcc/ddg.c

index 5372f24cb4ec3f8f49c983ba1f4cb5606a5b669f..c10b1e0ade9dcdc7c9f82191cc182d6a2fa1ea5d 100644 (file)
@@ -1,3 +1,10 @@
+2011-07-31  Revital Eres  <revital.eres@linaro.org>
+
+       * ddg.c (create_ddg_dep_from_intra_loop_link): Remove the creation
+       of anti-dep edge from a branch.
+       (add_cross_iteration_register_deps): Create anti-dep edge from
+       a branch.
+
 2011-07-31  Revital Eres  <revital.eres@linaro.org>
 
        * modulo-sched.c: Change comment.
index d06bdbb5448a36d4ecad229e8313723e01dc5f9e..856fa4e6800f2a17c52ecf03ca58ca28d9af0931 100644 (file)
--- a/gcc/ddg.c
+++ b/gcc/ddg.c
@@ -197,11 +197,6 @@ create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node,
         }
     }
 
-  /* If a true dep edge enters the branch create an anti edge in the
-     opposite direction to prevent the creation of reg-moves.  */
-  if ((DEP_TYPE (link) == REG_DEP_TRUE) && JUMP_P (dest_node->insn))
-    create_ddg_dep_no_link (g, dest_node, src_node, ANTI_DEP, REG_DEP, 1);
-
    latency = dep_cost (link);
    e = create_ddg_edge (src_node, dest_node, t, dt, latency, distance);
    add_edge_to_ddg (g, e);
@@ -306,8 +301,11 @@ add_cross_iteration_register_deps (ddg_ptr g, df_ref last_def)
 
          gcc_assert (first_def_node);
 
+         /* Always create the edge if the use node is a branch in
+            order to prevent the creation of reg-moves.  */
           if (DF_REF_ID (last_def) != DF_REF_ID (first_def)
-              || !flag_modulo_sched_allow_regmoves)
+              || !flag_modulo_sched_allow_regmoves
+             || JUMP_P (use_node->insn))
             create_ddg_dep_no_link (g, use_node, first_def_node, ANTI_DEP,
                                     REG_DEP, 1);