diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2011-05-27 14:17:36 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2011-05-27 14:17:36 +0000 |
commit | b0bd15f7aa9e9eecc4d97f6c0165c32c3055922e (patch) | |
tree | c11396d3bdf8e3a81e9606d61321ebfaf8526942 /gcc/sched-int.h | |
parent | f90aae43b8261a69582d438c98157dc1632b6685 (diff) | |
download | gcc-b0bd15f7aa9e9eecc4d97f6c0165c32c3055922e.zip gcc-b0bd15f7aa9e9eecc4d97f6c0165c32c3055922e.tar.gz gcc-b0bd15f7aa9e9eecc4d97f6c0165c32c3055922e.tar.bz2 |
sched-int.h (struct _haifa_deps_insn_data): New members cond and reverse_cond.
* sched-int.h (struct _haifa_deps_insn_data): New members cond
and reverse_cond.
(INSN_COND, INSN_REVERSE_COND): New macros.
* sched-deps.c (deps_analyze_insn): Call sched_get_condition_with_rev
once.
(sched_get_condition_with_rev): Cache the results, and look them up
if possible.
(sched_analyze_insn): Destroy INSN_COND of previous insns if they
are clobbered by the current insn.
* target.def (exposed_pipline): New sched data hook.
* doc/tm.texi.in: TARGET_SCHED_EXPOSED_PIPELINE: Add hook.
* doc/tm.texi: Regenerate.
From-SVN: r174336
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r-- | gcc/sched-int.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h index a18f846..f310f8a 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -679,6 +679,17 @@ struct _haifa_deps_insn_data search in 'forw_deps'. */ deps_list_t resolved_forw_deps; + /* If the insn is conditional (either through COND_EXEC, or because + it is a conditional branch), this records the condition. NULL + for insns that haven't been seen yet or don't have a condition; + const_true_rtx to mark an insn without a condition, or with a + condition that has been clobbered by a subsequent insn. */ + rtx cond; + + /* True if the condition in 'cond' should be reversed to get the actual + condition. */ + unsigned int reverse_cond : 1; + /* Some insns (e.g. call) are not allowed to move across blocks. */ unsigned int cant_move : 1; }; @@ -838,6 +849,8 @@ extern VEC(haifa_deps_insn_data_def, heap) *h_d_i_d; #define INSN_RESOLVED_FORW_DEPS(INSN) (HDID (INSN)->resolved_forw_deps) #define INSN_HARD_BACK_DEPS(INSN) (HDID (INSN)->hard_back_deps) #define INSN_SPEC_BACK_DEPS(INSN) (HDID (INSN)->spec_back_deps) +#define INSN_COND(INSN) (HDID (INSN)->cond) +#define INSN_REVERSE_COND(INSN) (HDID (INSN)->reverse_cond) #define CANT_MOVE(INSN) (HDID (INSN)->cant_move) #define CANT_MOVE_BY_LUID(LUID) (VEC_index (haifa_deps_insn_data_def, h_d_i_d, \ LUID)->cant_move) |