From 5921cd19f16fb9ebfd813b0ccd644748701773d6 Mon Sep 17 00:00:00 2001 From: Christian Bruel Date: Thu, 14 Jun 2012 10:38:22 +0200 Subject: [PATCH] re PR target/53621 ([SH] Frame pointers not generated with -fno-omit-frame-pointer on GCC 4.7.0) PR target/53621 * config/sh/sh.c (sh_option_override): Don't force flag_omit_frame_pointer and maccumulate_outgoing_args. * config/sh/sh.opt (maccumulate-outgoing-args): Init as Var. * gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH. From-SVN: r188598 --- gcc/ChangeLog | 7 +++++++ gcc/config/sh/sh.c | 25 +++++++++---------------- gcc/config/sh/sh.opt | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/stack-usage-1.c | 1 + 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 308798367e6..f2e1f25b377 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-06-12 Christian Bruel + + PR target/53621 + * config/sh/sh.c (sh_option_override): Don't force + flag_omit_frame_pointer and maccumulate_outgoing_args. + * config/sh/sh.opt (maccumulate-outgoing-args): Init as Var. + 2012-06-14 Richard Guenther * tree-vrp.c (VR_INITIALIZER): New define. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 4c6b9cf7af7..cdfd7b6bce8 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -751,8 +751,6 @@ sh_option_override (void) if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno))) sh_additional_register_names[regno][0] = '\0'; - flag_omit_frame_pointer = (PREFERRED_DEBUGGING_TYPE == DWARF2_DEBUG); - if ((flag_pic && ! TARGET_PREFERGOT) || (TARGET_SHMEDIA && !TARGET_PT_FIXED)) flag_no_function_cse = 1; @@ -784,22 +782,17 @@ sh_option_override (void) flag_schedule_insns = 0; } - if ((target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) == 0) - target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; - - /* Unwind info is not correct around the CFG unless either a frame - pointer is present or M_A_O_A is set. Fixing this requires rewriting - unwind info generation to be aware of the CFG and propagating states + /* Unwind info is not correct around the CFG unless either a frame + pointer is present or M_A_O_A is set. Fixing this requires rewriting + unwind info generation to be aware of the CFG and propagating states around edges. */ if ((flag_unwind_tables || flag_asynchronous_unwind_tables - || flag_exceptions || flag_non_call_exceptions) - && flag_omit_frame_pointer - && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)) - { - if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) - warning (0, "unwind tables currently require either a frame pointer " - "or -maccumulate-outgoing-args for correctness"); - target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; + || flag_exceptions || flag_non_call_exceptions) + && flag_omit_frame_pointer && !TARGET_ACCUMULATE_OUTGOING_ARGS) + { + warning (0, "unwind tables currently require either a frame pointer " + "or -maccumulate-outgoing-args for correctness"); + TARGET_ACCUMULATE_OUTGOING_ARGS = 1; } /* Unwinding with -freorder-blocks-and-partition does not work on this diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt index bcbe4f73a6a..76e66e28899 100644 --- a/gcc/config/sh/sh.opt +++ b/gcc/config/sh/sh.opt @@ -202,7 +202,7 @@ Target RejectNegative Condition(SUPPORT_SH5_32MEDIA_NOFPU) Generate FPU-less SHcompact code maccumulate-outgoing-args -Target Report Mask(ACCUMULATE_OUTGOING_ARGS) +Target Report Var(TARGET_ACCUMULATE_OUTGOING_ARGS) Init(1) Reserve space for outgoing arguments in the function prologue madjust-unroll diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7f203a8bbcc..74e831447bc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-13 Christian Bruel + + PR target/53621 + * gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH. + 2012-06-14 Richard Sandiford * gcc.target/mips/mips.exp (mips-dg-options): Handle -msynci. diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c index 78bb51d9bb2..91422286683 100644 --- a/gcc/testsuite/gcc.dg/stack-usage-1.c +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-fstack-usage" } */ +/* { dg-options "-fstack-usage -fomit-frame-pointer" { target { sh-*-* } } } */ /* This is aimed at testing basic support for -fstack-usage in the back-ends. See the SPARC back-end for example (grep flag_stack_usage_info in sparc.c). -- 2.30.2