toplev.c complains about "unwind tables currently require a frame pointer for
correctness".

This patchlet supplies a fix to avoid build warnings/test fails in that it sets
flag_omit_frame_pointer to 0 if unwind needs FP.

toplev.c:process_options sets flag_unwind_tables depending on
flag_non_call_exceptions and flag_asynchronous_unwind_tables after calling
targetm.target_option.override() so that the test includes these flags, too.

Ok?

Johann

        * config/avr/avr.c (avr_option_override): Set
        flag_omit_frame_pointer to 0 if frame pointer is needed for
        unwinding.
Index: config/avr/avr.c
===================================================================
--- config/avr/avr.c	(revision 179744)
+++ config/avr/avr.c	(working copy)
@@ -351,6 +351,20 @@ avr_option_override (void)
 {
   flag_delete_null_pointer_checks = 0;
 
+  /* Avoid warning from 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;

Reply via email to