aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched-int.h
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2011-09-30 13:33:54 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2011-09-30 13:33:54 +0000
commit06d7e8e7066b42f440993419493909fefafdc4d5 (patch)
treed5defa483a7652bacc4b555ea1317b96b9ec56a0 /gcc/sched-int.h
parentccb3dd5a143aa1975281425685a70f7bd6a130fa (diff)
downloadgcc-06d7e8e7066b42f440993419493909fefafdc4d5.zip
gcc-06d7e8e7066b42f440993419493909fefafdc4d5.tar.gz
gcc-06d7e8e7066b42f440993419493909fefafdc4d5.tar.bz2
haifa-sched.c (modulo_ii, [...]): New static variables.
* haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns, modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left, modulo_last_stage): New static variables. (set_modulo_params, discard_delay_pairs_above): New functions. (struct delay_pair): New member stages. (htab_i2_traverse, htab_i1_traverse): New static functions. (record_delay_slot_pair): New arg stages. All callers changed. Record it. (pair_delay): Take stages into account. (add_delay_dependencies): Don't do so for stage pairs. (struct sched_block_state): New member modulo_epilogue. (save_backtrack_point): Don't set SHADOW_P for stage pairs. (unschedule_insns_until): Decrease modulo_insns_scheduled. Set HARD_DEP without using or. (resolve_dependencies): New static function. (prune_ready_list): New arg modulo_epilogue_p. All callers changed. If it is true, allow only insns with INSN_EXACT_TICK set. (schedule_block): Return bool, always true for normal scheduling, true or false depending on modulo scheduling success otherwise. Add bookkeeping for modulo scheduling, and call resolve_dependencies on everything left over after a modulo schedule. (haifa_sched_init): Remove check_cfg call. Clear modulo_ii. * sched-int.h (schedule_block, record_delay_slot_pair): Adjust declarations. (set_modulo_params, discard_delay_pairs_above): Declare. * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New. * doc/invoke.texi (--param): Document it. From-SVN: r179383
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r--gcc/sched-int.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index 6797397..5e90cd1 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -1257,7 +1257,7 @@ extern int dep_cost (dep_t);
extern int set_priorities (rtx, rtx);
extern void sched_setup_bb_reg_pressure_info (basic_block, rtx);
-extern void schedule_block (basic_block *);
+extern bool schedule_block (basic_block *);
extern int cycle_issued_insns;
extern int issue_rate;
@@ -1330,7 +1330,9 @@ extern int current_blocks;
extern int target_bb;
extern bool sched_no_dce;
-extern void record_delay_slot_pair (rtx, rtx, int);
+extern void set_modulo_params (int, int, int, int);
+extern void record_delay_slot_pair (rtx, rtx, int, int);
+extern void discard_delay_pairs_above (int);
extern void free_delay_pairs (void);
extern void add_delay_dependencies (rtx);
extern bool sched_is_disabled_for_current_region_p (void);