From 344ae919589a8974b46b20fd9107e3fa45dd6426 Mon Sep 17 00:00:00 2001 From: gjl Date: Mon, 10 Oct 2011 17:25:48 +0000 Subject: [PATCH] * 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/avr/avr.c | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fc29829..b4bf897 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-10-10 Georg-Johann Lay + + * 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 PR bootstrap/50665 diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index c28b593..d8cc84a 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; -- 2.7.4