diff options
author | Maxim Kuvyrkov <mkuvyrkov@ispras.ru> | 2007-05-04 07:21:20 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <mkuvyrkov@gcc.gnu.org> | 2007-05-04 07:21:20 +0000 |
commit | 916fa4f033247e40c1fc7bad3211427766d3dca3 (patch) | |
tree | 26fd4a2f3e219cdad90c93bb12aee00782e48f9e /gcc/sched-int.h | |
parent | b640bd8f20ea23a3c74ba23d5f3bdc2a4b37d1d6 (diff) | |
download | gcc-916fa4f033247e40c1fc7bad3211427766d3dca3.zip gcc-916fa4f033247e40c1fc7bad3211427766d3dca3.tar.gz gcc-916fa4f033247e40c1fc7bad3211427766d3dca3.tar.bz2 |
haifa-sched.c (rtx_vec_t): New typedef.
* haifa-sched.c (rtx_vec_t): New typedef.
(contributes_to_priority_p): Extract piece of priority () into new
static function.
(priority): Use the function. Add assertion.
(rank_for_schedule, set_priorities): Add assertion to check that
insn's priority is initialized.
(clear_priorities, calc_priorities): Change signature. Make it update
all relevant insns. Update all callers ('add_to_speculative_block ()'
and 'create_block_check_twin ()').
* sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
Add new field 'priority_status'.
(INSN_PRIORITY_STATUS): New macro.
(INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
From-SVN: r124410
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r-- | gcc/sched-int.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h index e196a81..db5f1e4 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -537,8 +537,10 @@ struct haifa_insn_data unsigned int fed_by_spec_load : 1; unsigned int is_load_insn : 1; - /* Nonzero if priority has been computed already. */ - unsigned int priority_known : 1; + /* '> 0' if priority is valid, + '== 0' if priority was not yet computed, + '< 0' if priority in invalid and should be recomputed. */ + signed char priority_status; /* Nonzero if instruction has internal dependence (e.g. add_dependence was invoked with (insn == elem)). */ @@ -574,7 +576,8 @@ extern regset *glat_start, *glat_end; #define CANT_MOVE(insn) (h_i_d[INSN_UID (insn)].cant_move) #define INSN_DEP_COUNT(INSN) (h_i_d[INSN_UID (INSN)].dep_count) #define INSN_PRIORITY(INSN) (h_i_d[INSN_UID (INSN)].priority) -#define INSN_PRIORITY_KNOWN(INSN) (h_i_d[INSN_UID (INSN)].priority_known) +#define INSN_PRIORITY_STATUS(INSN) (h_i_d[INSN_UID (INSN)].priority_status) +#define INSN_PRIORITY_KNOWN(INSN) (INSN_PRIORITY_STATUS (INSN) > 0) #define INSN_REG_WEIGHT(INSN) (h_i_d[INSN_UID (INSN)].reg_weight) #define HAS_INTERNAL_DEP(INSN) (h_i_d[INSN_UID (INSN)].has_internal_dep) #define TODO_SPEC(INSN) (h_i_d[INSN_UID (INSN)].todo_spec) |