summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-10 17:25:48 +0000
committergjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-10 17:25:48 +0000
commit344ae919589a8974b46b20fd9107e3fa45dd6426 (patch)
tree401b140b40e5f52e1f44f278bc2e1203f3eb323b
parentfbb424363622e122b4b32e7db9e4fde7adfdad3f (diff)
downloadppe42-gcc-344ae919589a8974b46b20fd9107e3fa45dd6426.tar.gz
ppe42-gcc-344ae919589a8974b46b20fd9107e3fa45dd6426.zip
* config/avr/avr.c (avr_option_override): Set
flag_omit_frame_pointer to 0 if frame pointer is needed for unwinding. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179765 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/avr/avr.c15
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc29829d08e..b4bf8978549 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-10 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr.c (avr_option_override): Set
+ flag_omit_frame_pointer to 0 if frame pointer is needed for
+ unwinding.
+
2011-10-10 Uros Bizjak <ubizjak@gmail.com>
PR bootstrap/50665
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index c28b593a8b8..d8cc84a6099 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -351,6 +351,21 @@ avr_option_override (void)
{
flag_delete_null_pointer_checks = 0;
+ /* Unwind tables currently require a frame pointer for correctness,
+ see toplev.c:process_options(). */
+
+ if ((flag_unwind_tables
+ || flag_non_call_exceptions
+ || flag_asynchronous_unwind_tables)
+ && !ACCUMULATE_OUTGOING_ARGS)
+ {
+ flag_omit_frame_pointer = 0;
+ }
+ else
+ {
+ flag_omit_frame_pointer = (optimize >= 1);
+ }
+
avr_current_device = &avr_mcu_types[avr_mcu_index];
avr_current_arch = &avr_arch_types[avr_current_device->arch];
avr_extra_arch_macro = avr_current_device->macro;
OpenPOWER on IntegriCloud