summaryrefslogtreecommitdiff
path: root/gcc/sched-int.h
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2011-05-27 14:17:36 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2011-05-27 14:17:36 +0000
commit6c2d9e41bd78b2d0671431f523933ff3606db874 (patch)
treec11396d3bdf8e3a81e9606d61321ebfaf8526942 /gcc/sched-int.h
parent414a9d63ca2871b389705f0e34b2bddacdfa9009 (diff)
downloadgcc-6c2d9e41bd78b2d0671431f523933ff3606db874.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174336 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r--gcc/sched-int.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index a18f8461e71..f310f8a0dfb 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)