aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99534.patch
blob: 9fa6cf261ce820417262d4424d3b8cab1a18589c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2011-08-09  Revital Eres  <revital.eres@linaro.org>

	gcc/
	Backport from trunk -r176972:

	* 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.

=== modified file 'gcc/ddg.c'
--- old/gcc/ddg.c	2011-07-05 09:02:18 +0000
+++ new/gcc/ddg.c	2011-07-31 13:13:38 +0000
@@ -197,11 +197,6 @@
         }
     }
 
-  /* 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);
@@ -305,8 +300,11 @@
 
 	  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);