summaryrefslogtreecommitdiff
path: root/gcc/sched-rgn.c
diff options
context:
space:
mode:
authoramonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-18 08:29:48 +0000
committeramonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-18 08:29:48 +0000
commit566e7db22a1709f81daf444f317f1241115df7d6 (patch)
tree7176ffac7109e0d7fc1623733fb00dfdd7a7b73c /gcc/sched-rgn.c
parentcdf133112c676395c031e54a9f1cea60d59b3a0c (diff)
downloadgcc-566e7db22a1709f81daf444f317f1241115df7d6.tar.gz
2008-09-18 Alexander Monakov <amonakov@ispras.ru>
PR middle-end/37499 * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count. * sched-rgn.c (ref_counts): Remove. (insn_referenced): New static variable. (INSN_REF_COUNT): Remove. (sched_run_compute_dependencies): Use insn_referenced instead of INSN_REF_COUNT. (add_branch_dependences): Likewise. Delete dead assignment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140445 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-rgn.c')
-rw-r--r--gcc/sched-rgn.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c
index 8ea3d098dcc..004064ecf42 100644
--- a/gcc/sched-rgn.c
+++ b/gcc/sched-rgn.c
@@ -2395,9 +2395,9 @@ sets_likely_spilled_1 (rtx x, const_rtx pat, void *data)
*ret = true;
}
-/* An array used to hold the number of dependencies in which insn
- participates. Used in add_branch_dependences. */
-static int *ref_counts;
+/* A bitmap to note insns that participate in any dependency. Used in
+ add_branch_dependences. */
+static sbitmap insn_referenced;
/* Add dependences so that branches are scheduled to run last in their
block. */
@@ -2424,8 +2424,6 @@ add_branch_dependences (rtx head, rtx tail)
are not moved before reload because we can wind up with register
allocation failures. */
-#define INSN_REF_COUNT(INSN) (ref_counts[INSN_UID (INSN)])
-
insn = tail;
last = 0;
while (CALL_P (insn)
@@ -2448,7 +2446,7 @@ add_branch_dependences (rtx head, rtx tail)
{
if (! sched_insns_conditions_mutex_p (last, insn))
add_dependence (last, insn, REG_DEP_ANTI);
- INSN_REF_COUNT (insn)++;
+ SET_BIT (insn_referenced, INSN_LUID (insn));
}
CANT_MOVE (insn) = 1;
@@ -2470,12 +2468,11 @@ add_branch_dependences (rtx head, rtx tail)
{
insn = prev_nonnote_insn (insn);
- if (INSN_REF_COUNT (insn) != 0)
+ if (TEST_BIT (insn_referenced, INSN_LUID (insn)))
continue;
if (! sched_insns_conditions_mutex_p (last, insn))
add_dependence (last, insn, REG_DEP_ANTI);
- INSN_REF_COUNT (insn) = 1;
}
#ifdef HAVE_conditional_execution
@@ -3086,14 +3083,15 @@ sched_rgn_compute_dependencies (int rgn)
for (bb = 0; bb < current_nr_blocks; bb++)
init_deps (bb_deps + bb);
- /* Initialize array used in add_branch_dependencies (). */
- ref_counts = XCNEWVEC (int, get_max_uid () + 1);
+ /* Initialize bitmap used in add_branch_dependences. */
+ insn_referenced = sbitmap_alloc (sched_max_luid);
+ sbitmap_zero (insn_referenced);
/* Compute backward dependencies. */
for (bb = 0; bb < current_nr_blocks; bb++)
compute_block_dependences (bb);
- free (ref_counts);
+ sbitmap_free (insn_referenced);
free_pending_lists ();
finish_deps_global ();
free (bb_deps);