diff options
author | Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> | 2012-09-04 09:08:50 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2012-09-04 09:08:50 +0000 |
commit | cee8f252d70e664c198070ef60ddc15d06176dad (patch) | |
tree | 734988fbfc6dce3a5783355db433dce4a14a4646 /gcc/config/avr | |
parent | 3474210e8c456af82a982db5b388aedc7ba5cd4c (diff) | |
download | gcc-cee8f252d70e664c198070ef60ddc15d06176dad.zip gcc-cee8f252d70e664c198070ef60ddc15d06176dad.tar.gz gcc-cee8f252d70e664c198070ef60ddc15d06176dad.tar.bz2 |
re PR target/54220 ([avr] Potential stack corruption in naked functions at -O0)
PR target/54220
* config/avr/avr.c (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): New
define to...
(avr_allocate_stack_slots_for_args): ...this new static function.
From-SVN: r190914
Diffstat (limited to 'gcc/config/avr')
-rw-r--r-- | gcc/config/avr/avr.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index c1753300..bab13a4 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -700,6 +700,16 @@ avr_regs_to_save (HARD_REG_SET *set) return count; } + +/* Implement `TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS' */ + +static bool +avr_allocate_stack_slots_for_args (void) +{ + return !cfun->machine->is_naked; +} + + /* Return true if register FROM can be eliminated via register TO. */ static bool @@ -11339,6 +11349,9 @@ avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg, #undef TARGET_CAN_ELIMINATE #define TARGET_CAN_ELIMINATE avr_can_eliminate +#undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS +#define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS avr_allocate_stack_slots_for_args + #undef TARGET_WARN_FUNC_RETURN #define TARGET_WARN_FUNC_RETURN avr_warn_func_return |