diff options
author | DJ Delorie <dj@redhat.com> | 2001-06-21 12:50:56 -0400 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2001-06-21 12:50:56 -0400 |
commit | c0e7830f8cb99c695c5026f1685f86a5fdef8df5 (patch) | |
tree | 38ad78224be3ce9d772ab85dbd0b522179b799d5 /gcc/integrate.h | |
parent | 2147b1541cb6a841b54cf92f025ddc62857998e5 (diff) | |
download | gcc-c0e7830f8cb99c695c5026f1685f86a5fdef8df5.tar.gz |
integrate.c (ggc.h): Include.
* 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.
From-SVN: r43486
Diffstat (limited to 'gcc/integrate.h')
-rw-r--r-- | gcc/integrate.h | 16 |
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 *, |