diff options
author | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-17 11:16:00 +0000 |
---|---|---|
committer | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-17 11:16:00 +0000 |
commit | 43165fe4e5cdb3c9fe27cd8fb87a577b33f291ee (patch) | |
tree | 134ce3aa4098037a175571e45c5fbc2d2a49bbd1 /gcc/function.h | |
parent | 776274ce5365282eb56797ba85a14102d09db061 (diff) | |
download | gcc-43165fe4e5cdb3c9fe27cd8fb87a577b33f291ee.tar.gz |
* function.c (try_fit_stack_local, add_frame_space): New static
functions.
(assign_stack_local_1): Use them. Look for opportunities to use
space previously wasted on alignment.
* function.h (struct frame_space): New.
(struct rtl_data): Add FRAME_SPACE_LIST member.
* reload1.c (something_was_spilled): New static variable.
(alter_reg): Set it.
(reload): Test it in addition to testing if the frame size changed.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159480 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.h')
-rw-r--r-- | gcc/function.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/function.h b/gcc/function.h index e5e03384718..d008e8586ef 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -231,6 +231,17 @@ struct GTY(()) function_subsections { const char *unlikely_text_section_name; }; +/* Describe an empty area of space in the stack frame. These can be chained + into a list; this is used to keep track of space wasted for alignment + reasons. */ +struct GTY(()) frame_space +{ + struct frame_space *next; + + HOST_WIDE_INT start; + HOST_WIDE_INT length; +}; + /* Datastructures maintained for currently processed function in RTL form. */ struct GTY(()) rtl_data { struct expr_status expr; @@ -278,6 +289,9 @@ struct GTY(()) rtl_data { Made for the sake of unshare_all_rtl. */ rtx x_stack_slot_list; + /* List of empty areas in the stack frame. */ + struct frame_space *frame_space_list; + /* Place after which to insert the tail_recursion_label if we need one. */ rtx x_stack_check_probe_note; |