aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/avr/avr.c13
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d034c10..70aecdd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2012-09-04 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ 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.
+
2012-09-04 Christophe Lyon <christophe.lyon@linaro.org>
* config/arm/arm.c (arm_expand_builtin): Replace gen_rtx_CONST_INT
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