summaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-06-02 10:48:11 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-06-02 10:48:11 +0000
commitbc6d3f91a344f7ba4840fd41890076c62d2a538a (patch)
tree5f109a1d3dfcb88bc0c15d333cf680895b7292b4 /gcc/explow.c
parent66bd20e7b61b37c6a13cb71e20be5f69236d0bbe (diff)
downloadgcc-bc6d3f91a344f7ba4840fd41890076c62d2a538a.tar.gz
function.h (struct stack_usage): Remove dynamic_alloc_count field.
* function.h (struct stack_usage): Remove dynamic_alloc_count field. (current_function_dynamic_alloc_count): Delete. * builtins.c (expand_builtin_setjmp_setup): Do not set calls_setjmp. (expand_builtin_nonlocal_goto): Remove obsolete comment. (expand_builtin_update_setjmp_buf): Remove dead code. * cse.c (cse_find_path): Do not follow a single abnormal incoming edge. * explow.c (allocate_dynamic_stack_space): Remove SETJMP_VIA_SAVE_AREA support. * function.c (instantiate_virtual_regs): Likewise. * postreload-gcse.c (bb_has_well_behaved_predecessors): Return false for a block with a single abnormal incoming edge. * config/sparc/sparc.h (STACK_SAVEAREA_MODE): Define. * config/sparc/sparc-protos.h (load_got_register): Declare. * config/sparc/sparc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define. (load_got_register): Make global. (sparc_frame_pointer_required): Add 'static'. (sparc_can_eliminate): Likewise. Call sparc_frame_pointer_required. (sparc_builtin_setjmp_frame_value): New function. * config/sparc/sparc.md (UNSPECV_SETJMP): Remove. (save_stack_nonlocal): New expander. (restore_stack_nonlocal): Likewise. (nonlocal_goto): Remove modes, adjust predicates and reimplement. (nonlocal_goto_internal): New insn. (goto_handler_and_restore): Delete. (builtin_setjmp_setup): Likewise. (do_builtin_setjmp_setup): Likewise. (setjmp): Likewise. (builtin_setjmp_receiver): New expander. From-SVN: r174564
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c36
1 files changed, 2 insertions, 34 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index fe507877c90..7387dad98df 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -1,6 +1,6 @@
/* Subroutines for manipulating rtx's in semantically interesting ways.
- Copyright (C) 1987, 1991, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1987, 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@@ -1249,38 +1249,6 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
size_align = extra_align;
}
-#ifdef SETJMP_VIA_SAVE_AREA
- /* If setjmp restores regs from a save area in the stack frame,
- avoid clobbering the reg save area. Note that the offset of
- virtual_incoming_args_rtx includes the preallocated stack args space.
- It would be no problem to clobber that, but it's on the wrong side
- of the old save area.
-
- What used to happen is that, since we did not know for sure
- whether setjmp() was invoked until after RTL generation, we
- would use reg notes to store the "optimized" size and fix things
- up later. These days we know this information before we ever
- start building RTL so the reg notes are unnecessary. */
- if (cfun->calls_setjmp)
- {
- rtx dynamic_offset
- = expand_binop (Pmode, sub_optab, virtual_stack_dynamic_rtx,
- stack_pointer_rtx, NULL_RTX, 1, OPTAB_LIB_WIDEN);
-
- size = expand_binop (Pmode, add_optab, size, dynamic_offset,
- NULL_RTX, 1, OPTAB_LIB_WIDEN);
-
- /* The above dynamic offset cannot be computed statically at this
- point, but it will be possible to do so after RTL expansion is
- done. Record how many times we will need to add it. */
- if (flag_stack_usage_info)
- current_function_dynamic_alloc_count++;
-
- /* ??? Can we infer a minimum of STACK_BOUNDARY here? */
- size_align = BITS_PER_UNIT;
- }
-#endif /* SETJMP_VIA_SAVE_AREA */
-
/* Round the size to a multiple of the required stack alignment.
Since the stack if presumed to be rounded before this allocation,
this will maintain the required alignment.