aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/avr
diff options
context:
space:
mode:
authorSenthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>2012-09-04 09:08:50 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2012-09-04 09:08:50 +0000
commitcee8f252d70e664c198070ef60ddc15d06176dad (patch)
tree734988fbfc6dce3a5783355db433dce4a14a4646 /gcc/config/avr
parent3474210e8c456af82a982db5b388aedc7ba5cd4c (diff)
downloadgcc-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.c13
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