summaryrefslogtreecommitdiff
path: root/gcc/sched-int.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-01-27 04:46:53 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-01-27 04:46:53 +0000
commit5deaeb50d39ff065b90fc911540584c2da3835e2 (patch)
tree0550590bfcb89e31ecc9e480084d2d4bceb518e9 /gcc/sched-int.h
parente1ff7102031f1660a3c4fb71136eb8f7aa7380a5 (diff)
downloadgcc-5deaeb50d39ff065b90fc911540584c2da3835e2.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49262 138bc75d-0d04-0410-961f-82ee72b054a4
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 2836aef11e4..851d058c74d 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));