aboutsummaryrefslogtreecommitdiff
path: root/gcc/lists.c
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <mkuvyrkov@ispras.ru>2006-03-16 05:23:21 +0000
committerMaxim Kuvyrkov <mkuvyrkov@gcc.gnu.org>2006-03-16 05:23:21 +0000
commit63f54b1abd832e2c6f7938aac2e2c455b23c91b7 (patch)
tree2406ed9805b60255cb95efc06c870414886a802d /gcc/lists.c
parentd08eefb9d2cb72e7168d3b790111d6c07ce87a8a (diff)
downloadgcc-63f54b1abd832e2c6f7938aac2e2c455b23c91b7.zip
gcc-63f54b1abd832e2c6f7938aac2e2c455b23c91b7.tar.gz
gcc-63f54b1abd832e2c6f7938aac2e2c455b23c91b7.tar.bz2
sched-int.h (struct haifa_insn_data): New fields: resolved_deps, inter_tick, queue_index.
2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> * sched-int.h (struct haifa_insn_data): New fields: resolved_deps, inter_tick, queue_index. (struct sched_info): Change signature of init_ready_list field. Adjust all initializations. (RESOLVED_DEPS): New access macro. (ready_add): Remove prototype. (try_ready): Add prototype. * sched-rgn.c (init_ready_list): Use try_ready. (schedule_region): Initialize current_sched_info->{sched_max_insns_priority, queue_must_finish_empty}. * sched-ebb.c (new_ready): Remove. Adjust ebb_sched_info. (init_ready_list): Use try_ready. (schedule_ebb): Initialize current_sched_info->sched_max_insns_priority. * lists.c (remove_list_elem): Remove `static'. (remove_free_INSN_LIST_elem): New function. * rtl.h (remove_list_elem, remove_free_INSN_LIST_elem): Add prototypes. * haifa-sched.c (INTER_TICK, QUEUE_INDEX): New macros. (INVALID_TICK, MIN_TICK, QUEUE_SCHEDULED, QUEUE_NOWHERE, QUEUE_READY): New constants. (readyp): New variable. (queue_remove, ready_remove_insn, fix_inter_tick, fix_tick_ready, change_queue_index, resolve_dep): New static functions. (try_ready): New function. Adjust callers in sched-rgn.c and sched-ebb.c to use it instead of ready_add. (clock_var): Move at the begining of file. (rank_for_schedule): Fix typo. (queue_insn): Add assertion. Handle QUEUE_INDEX. (ready_lastpos): Enforce assertion. (ready_add): Make it static. Handle QUEUE_INDEX. Add new argument, update all callers. (ready_remove_first, ready_remove): Handle QUEUE_INDEX. (schedule_insn): Rewrite to use try_ready and resolve_dep. (queue_to_ready): Use free_INSN_LIST_list. (early_queue_to_ready): Fix typo. (schedule_block): Init readyp. Move init_ready_list call after the initialization of clock_var. Fix error in rejecting insn by targetm.sched.dfa_new_cycle. Add call to fix_inter_tick. Remove code that previously corrected INSN_TICKs. Add code for handling QUEUE_INDEX. (set_priorities): Fix typo. (sched_init): Initialize INSN_TICK, INTER_TICK and QUEUE_INDEX. Clarify comment and code that keeps current_sched_info->next_tail non-null. From-SVN: r112127
Diffstat (limited to 'gcc/lists.c')
-rw-r--r--gcc/lists.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/lists.c b/gcc/lists.c
index 70f2ee8..c9df54a 100644
--- a/gcc/lists.c
+++ b/gcc/lists.c
@@ -98,7 +98,7 @@ remove_list_node (rtx *listp)
/* Removes corresponding to ELEM node from the list pointed to by LISTP.
Returns that node. */
-static rtx
+rtx
remove_list_elem (rtx elem, rtx *listp)
{
rtx node;
@@ -241,4 +241,12 @@ remove_free_DEPS_LIST_elem (rtx elem, rtx *listp)
free_DEPS_LIST_node (remove_list_elem (elem, listp));
}
+/* Remove and free corresponding to ELEM node in the INSN_LIST pointed to
+ by LISTP. */
+void
+remove_free_INSN_LIST_elem (rtx elem, rtx *listp)
+{
+ free_INSN_LIST_node (remove_list_elem (elem, listp));
+}
+
#include "gt-lists.h"