aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched-int.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-01-26 20:46:53 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-01-26 20:46:53 -0800
commit37a0f8a5254bdcdd68eb8fb711acf090c5adc97c (patch)
tree0550590bfcb89e31ecc9e480084d2d4bceb518e9 /gcc/sched-int.h
parentcea3bd3e5a0a40eb90809bf90063da4911ba23b0 (diff)
downloadgcc-37a0f8a5254bdcdd68eb8fb711acf090c5adc97c.zip
gcc-37a0f8a5254bdcdd68eb8fb711acf090c5adc97c.tar.gz
gcc-37a0f8a5254bdcdd68eb8fb711acf090c5adc97c.tar.bz2
sched-deps.c (reg_pending_uses_head): New.
* sched-deps.c (reg_pending_uses_head): New. (reg_pending_barrier): Rename from reg_pending_sets_all. (find_insn_list): Don't mark inline. (find_insn_mem_list): Remove. (add_dependence_list, add_dependence_list_and_free): New. (flush_pending_lists): Replace only_write param with separate for_read and for_write parameters. Update all callers. Use add_dependence_list_and_free. (sched_analyze_1): Do not add reg dependencies here; just set the pending bits. Use add_dependence_list. (sched_analyze_2): Likewise. (sched_analyze_insn): Replace schedule_barrier_found with reg_pending_barrier. Add all dependencies for pending reg uses, sets, and clobbers. (sched_analyze): Don't add reg dependencies for calls, just set pending bits. Use regs_invalidated_by_call. Treat sched_before_next_call as a normal list, not a fake insn. (init_deps): No funny init for sched_before_next_call. (free_deps): Free pending mems lists. Don't zero reg_last. (init_deps_global): Init reg_pending_uses. (finish_deps_global): Free it. * sched-int.h (deps): Make in_post_call_group_p boolean. Update docs. (find_insn_mem_list): Remove. * sched-rgn.c (concat_INSN_LIST, concat_insn_mem_list): New. (propagate_deps): Use them. Zero temp mem lists. From-SVN: r49262
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r--gcc/sched-int.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index 2836aef..851d058 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -68,19 +68,20 @@ struct deps
too large. */
rtx last_pending_memory_flush;
- /* The last function call we have seen. All hard regs, and, of course,
- the last function call, must depend on this. */
+ /* A list of the last function calls we have seen. We use a list to
+ represent last function calls from multiple predecessor blocks.
+ Used to prevent register lifetimes from expanding unnecessarily. */
rtx last_function_call;
+ /* A list of insns which use a pseudo register that does not already
+ cross a call. We create dependencies between each of those insn
+ and the next call insn, to ensure that they won't cross a call after
+ scheduling is done. */
+ rtx sched_before_next_call;
+
/* Used to keep post-call psuedo/hard reg movements together with
the call. */
- int in_post_call_group_p;
-
- /* The LOG_LINKS field of this is a list of insns which use a pseudo
- register that does not already cross a call. We create
- dependencies between each of those insn and the next call insn,
- to ensure that they won't cross a call after scheduling is done. */
- rtx sched_before_next_call;
+ bool in_post_call_group_p;
/* The maximum register number for the following arrays. Before reload
this is max_reg_num; after reload it is FIRST_PSEUDO_REGISTER. */
@@ -274,7 +275,6 @@ extern void free_deps PARAMS ((struct deps *));
extern void init_deps_global PARAMS ((void));
extern void finish_deps_global PARAMS ((void));
extern void compute_forward_dependences PARAMS ((rtx, rtx));
-extern int find_insn_mem_list PARAMS ((rtx, rtx, rtx, rtx));
extern rtx find_insn_list PARAMS ((rtx, rtx));
extern void init_dependency_caches PARAMS ((int));
extern void free_dependency_caches PARAMS ((void));