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)
target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
/* Unwind info is not correct around the CFG unless either a frame /* 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 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 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))
{ {
if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS)
warning (0, "unwind tables currently require either a frame pointer " warning (0, "unwind tables currently require either a frame pointer "
"or -maccumulate-outgoing-args for correctness"); "or -maccumulate-outgoing-args for correctness");
target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; TARGET_ACCUMULATE_OUTGOING_ARGS = 1;
} }
/* 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