aboutsummaryrefslogtreecommitdiff
path: root/gcc/integrate.h
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2001-06-21 16:50:56 +0000
committerDJ Delorie <dj@redhat.com>2001-06-21 16:50:56 +0000
commit27efa7e01aa19a0559e55920526aa16c69d61fe5 (patch)
tree38ad78224be3ce9d772ab85dbd0b522179b799d5 /gcc/integrate.h
parent2669009fa4dea851d7c0f12911f5c4d3200e00fc (diff)
* integrate.c (ggc.h): Include.
(initial_value_pair, initial_value_struct, setup_initial_hard_reg_value_integration): Add prototypes. (expand_inline_function): Call setup_initial_hard_reg_value_integration. (has_func_hard_reg_initial_val, get_func_hard_reg_initial_val, get_hard_reg_initial_val, has_hard_reg_initial_val): New functions to keep track of values present at the start of a function. (mark_hard_reg_initial_vals): New, for gc. (setup_initial_hard_reg_value_integration): New. Sets up pseudo mappings for initial values. (emit_initial_value_sets): New. Emits code to set initial value pseudos. * integrate.h: Add prototypes for new functions. * function.h (struct function): Add hard_reg_initial_vals field. * function.c (integrate.h): Include. (mark_function_status): Call mark_hard_reg_initial_vals. * toplev.c (integrate.h): Include. (rest_of_compilation): Call emit_initial_value_sets. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@43486 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/integrate.h')
-rw-r--r--gcc/integrate.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/integrate.h b/gcc/integrate.h
index 52c300424fa..04d5bd22e03 100644
--- a/gcc/integrate.h
+++ b/gcc/integrate.h
@@ -129,6 +129,22 @@ struct inline_remap
labels, and frame-pointer offsets as necessary. */
extern rtx copy_rtx_and_substitute PARAMS ((rtx, struct inline_remap *, int));
+/* Return a pseudo that corresponds to the value in the specified hard
+ reg as of the start of the function (for inlined functions, the
+ value at the start of the parent function). */
+extern rtx get_hard_reg_initial_val PARAMS ((enum machine_mode, int));
+/* Likewise, but for a different than the current function, or
+ arbitrary expression. */
+extern rtx get_func_hard_reg_initial_val PARAMS ((struct function *, rtx));
+/* Likewise, but iff someone else has caused it to become allocated. */
+extern rtx has_func_hard_reg_initial_val PARAMS ((struct function *, rtx));
+/* Likewise, but for common cases. */
+extern rtx has_hard_reg_initial_val PARAMS ((enum machine_mode, int));
+/* This is for GC. */
+extern void mark_hard_reg_initial_vals PARAMS ((struct function *));
+/* Called from rest_of_compilation. */
+extern void emit_initial_value_sets PARAMS ((void));
+
/* Copy a declaration when one function is substituted inline into
another. */
extern union tree_node *copy_decl_for_inlining PARAMS ((union tree_node *,