aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/avr/avr.h
diff options
context:
space:
mode:
authorAndy Hutchinson <hutchinsonandy@gcc.gnu.org>2009-11-15 04:10:20 +0000
committerAndy Hutchinson <hutchinsonandy@gcc.gnu.org>2009-11-15 04:10:20 +0000
commita212a5d408ce85d717a166103601f596b58da9af (patch)
tree6acbfe49dc093b58ca7e058662c88af688c730d0 /gcc/config/avr/avr.h
parentde8caa8cf818f016d6ce5ad6bfade2c34426d6e6 (diff)
downloadgcc-a212a5d408ce85d717a166103601f596b58da9af.zip
gcc-a212a5d408ce85d717a166103601f596b58da9af.tar.gz
gcc-a212a5d408ce85d717a166103601f596b58da9af.tar.bz2
PR target/21078, 21080
PR target/21078, 21080 * config/avr/avr.c (avr_return_addr_rtx): New function for builtin_return_address. (expand_prologue): Calculate stack usage. (avr_asm_function_end_prologue): Output stack size and offset label. * config/avr/avr.h (RETURN_ADDR_RTX): Replace. (machine_function): Add stack_usage. * config/avr/avr-protos.h (avr_return_addr_rtx): New function. From-SVN: r154188
Diffstat (limited to 'gcc/config/avr/avr.h')
-rw-r--r--gcc/config/avr/avr.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 782ad11..4e07a2e 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -367,8 +367,7 @@ enum reg_class {
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
OFFSET = avr_initial_elimination_offset (FROM, TO)
-#define RETURN_ADDR_RTX(count, x) \
- gen_rtx_MEM (Pmode, memory_address (Pmode, plus_constant (tem, 1)))
+#define RETURN_ADDR_RTX(count, tem) avr_return_addr_rtx (count, tem)
/* Don't use Push rounding. expr.c: emit_single_push_insn is broken
for POST_DEC targets (PR27386). */
@@ -857,4 +856,7 @@ struct GTY(()) machine_function
/* 'true' - if current function is a 'main' function
as specified by the "OS_main" attribute. */
int is_OS_main;
+
+ /* Current function stack size. */
+ int stack_usage;
};