summaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2010-05-17 11:16:00 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2010-05-17 11:16:00 +0000
commit43165fe4e5cdb3c9fe27cd8fb87a577b33f291ee (patch)
tree134ce3aa4098037a175571e45c5fbc2d2a49bbd1 /gcc/function.h
parent776274ce5365282eb56797ba85a14102d09db061 (diff)
downloadgcc-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.h14
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;