Commit 5921cd19 by Christian Bruel Committed by Christian Bruel

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
parent 3c9c79e8
2012-06-12 Christian Bruel <christian.bruel@st.com>
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 <rguenther@suse.de> 2012-06-14 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (VR_INITIALIZER): New define. * tree-vrp.c (VR_INITIALIZER): New define.
......
...@@ -751,8 +751,6 @@ sh_option_override (void) ...@@ -751,8 +751,6 @@ sh_option_override (void)
if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno))) if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno)))
sh_additional_register_names[regno][0] = '\0'; sh_additional_register_names[regno][0] = '\0';
flag_omit_frame_pointer = (PREFERRED_DEBUGGING_TYPE == DWARF2_DEBUG);
if ((flag_pic && ! TARGET_PREFERGOT) if ((flag_pic && ! TARGET_PREFERGOT)
|| (TARGET_SHMEDIA && !TARGET_PT_FIXED)) || (TARGET_SHMEDIA && !TARGET_PT_FIXED))
flag_no_function_cse = 1; flag_no_function_cse = 1;
...@@ -784,22 +782,17 @@ sh_option_override (void) ...@@ -784,22 +782,17 @@ sh_option_override (void)
flag_schedule_insns = 0; flag_schedule_insns = 0;
} }
if ((target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) == 0) /* Unwind info is not correct around the CFG unless either a frame
target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; 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. */ around edges. */
if ((flag_unwind_tables || flag_asynchronous_unwind_tables if ((flag_unwind_tables || flag_asynchronous_unwind_tables
|| flag_exceptions || flag_non_call_exceptions) || flag_exceptions || flag_non_call_exceptions)
&& flag_omit_frame_pointer && flag_omit_frame_pointer && !TARGET_ACCUMULATE_OUTGOING_ARGS)
&& !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)) {
{ warning (0, "unwind tables currently require either a frame pointer "
if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) "or -maccumulate-outgoing-args for correctness");
warning (0, "unwind tables currently require either a frame pointer " TARGET_ACCUMULATE_OUTGOING_ARGS = 1;
"or -maccumulate-outgoing-args for correctness");
target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
} }
/* Unwinding with -freorder-blocks-and-partition does not work on this /* Unwinding with -freorder-blocks-and-partition does not work on this
......
...@@ -202,7 +202,7 @@ Target RejectNegative Condition(SUPPORT_SH5_32MEDIA_NOFPU) ...@@ -202,7 +202,7 @@ Target RejectNegative Condition(SUPPORT_SH5_32MEDIA_NOFPU)
Generate FPU-less SHcompact code Generate FPU-less SHcompact code
maccumulate-outgoing-args 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 Reserve space for outgoing arguments in the function prologue
madjust-unroll madjust-unroll
......
2012-06-13 Christian Bruel <christian.bruel@st.com>
PR target/53621
* gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH.
2012-06-14 Richard Sandiford <rdsandiford@googlemail.com> 2012-06-14 Richard Sandiford <rdsandiford@googlemail.com>
* gcc.target/mips/mips.exp (mips-dg-options): Handle -msynci. * gcc.target/mips/mips.exp (mips-dg-options): Handle -msynci.
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-fstack-usage" } */ /* { 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. /* 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). See the SPARC back-end for example (grep flag_stack_usage_info in sparc.c).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment