diff options
author | amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-18 08:29:48 +0000 |
---|---|---|
committer | amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-18 08:29:48 +0000 |
commit | 566e7db22a1709f81daf444f317f1241115df7d6 (patch) | |
tree | 7176ffac7109e0d7fc1623733fb00dfdd7a7b73c | |
parent | cdf133112c676395c031e54a9f1cea60d59b3a0c (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/sched-int.h | 3 | ||||
-rw-r--r-- | gcc/sched-rgn.c | 20 |
3 files changed, 22 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6c2e2b36225..1091895eb16 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +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. + 2008-09-17 Adam Nemet <anemet@caviumnetworks.com> * haifa-sched.c (dep_cost_1): Recognize the producer even if the diff --git a/gcc/sched-int.h b/gcc/sched-int.h index 7fd3b5526a2..e332c61f458 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -678,9 +678,6 @@ struct _haifa_insn_data /* A priority for each insn. */ int priority; - /* Number of instructions referring to this insn. */ - int ref_count; - /* The minimum clock tick at which the insn becomes ready. This is used to note timing constraints for the insns in the pending list. */ int tick; 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); |