From 13c5e7bfc77941b205095c42ac3bf3a03987678e Mon Sep 17 00:00:00 2001 From: kazu Date: Tue, 16 Dec 2003 00:06:36 +0000 Subject: [PATCH] * flow.c (EXIT_IGNORE_STACK): Move to ... * defaults.h (EXIT_IGNORE_STACK): ... here. * dojump.c (clear_pending_stack_adjust): Don't use #ifdef EXIT_IGNORE_STACK. * function.c (expand_function_end): Likewise. * global.c (global_alloc): Likewise. * ra.c (init_ra): Likewise. * reload1.c (init_elim_table): Likewise. * reorg.c (fill_simple_delay_slots): Likewise. * resource.c (init_resource_info): Likewise. * doc/tm.texi (EXIT_IGNORE_STACK): Document that the default is 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74654 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 15 +++++++++++++++ gcc/defaults.h | 7 +++++++ gcc/doc/tm.texi | 3 ++- gcc/dojump.c | 2 -- gcc/flow.c | 8 -------- gcc/function.c | 16 +++++++--------- gcc/global.c | 2 -- gcc/ra.c | 2 -- gcc/reload1.c | 2 -- gcc/reorg.c | 2 -- gcc/resource.c | 2 -- 11 files changed, 31 insertions(+), 30 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be45849..91088ab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2003-12-15 Kazu Hirata + + * flow.c (EXIT_IGNORE_STACK): Move to ... + * defaults.h (EXIT_IGNORE_STACK): ... here. + * dojump.c (clear_pending_stack_adjust): Don't use #ifdef + EXIT_IGNORE_STACK. + * function.c (expand_function_end): Likewise. + * global.c (global_alloc): Likewise. + * ra.c (init_ra): Likewise. + * reload1.c (init_elim_table): Likewise. + * reorg.c (fill_simple_delay_slots): Likewise. + * resource.c (init_resource_info): Likewise. + * doc/tm.texi (EXIT_IGNORE_STACK): Document that the default + is 0. + 2003-12-15 J"orn Rennecke * reload.c (reg_overlap_mentioned_for_reload_p): diff --git a/gcc/defaults.h b/gcc/defaults.h index 41fd96d..d540e28 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -689,4 +689,11 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! #define LOCAL_REGNO(REGNO) 0 #endif +/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, + the stack pointer does not matter. The value is tested only in + functions that have frame pointers. */ +#ifndef EXIT_IGNORE_STACK +#define EXIT_IGNORE_STACK 0 +#endif + #endif /* ! GCC_DEFAULTS_H */ diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 5075a4c..1b028f9 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -4196,7 +4196,8 @@ function. Define this macro as a C expression that is nonzero if the return instruction or the function epilogue ignores the value of the stack pointer; in other words, if it is safe to delete an instruction to -adjust the stack pointer before a return from the function. +adjust the stack pointer before a return from the function. The +default is 0. Note that this macro's value is relevant only for functions for which frame pointers are maintained. It is never safe to delete a final diff --git a/gcc/dojump.c b/gcc/dojump.c index 8887c49..1f938a8 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -57,7 +57,6 @@ init_pending_stack_adjust (void) void clear_pending_stack_adjust (void) { -#ifdef EXIT_IGNORE_STACK if (optimize > 0 && (! flag_omit_frame_pointer || current_function_calls_alloca) && EXIT_IGNORE_STACK @@ -67,7 +66,6 @@ clear_pending_stack_adjust (void) stack_pointer_delta -= pending_stack_adjust, pending_stack_adjust = 0; } -#endif } /* Pop any previously-pushed arguments that have not been popped yet. */ diff --git a/gcc/flow.c b/gcc/flow.c index 965e9fe..023fb1c 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -141,14 +141,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "obstack.h" #include "splay-tree.h" -/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, - the stack pointer does not matter. The value is tested only in - functions that have frame pointers. - No definition is equivalent to always zero. */ -#ifndef EXIT_IGNORE_STACK -#define EXIT_IGNORE_STACK 0 -#endif - #ifndef HAVE_epilogue #define HAVE_epilogue 0 #endif diff --git a/gcc/function.c b/gcc/function.c index f3c07d2..618447d 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -7038,16 +7038,14 @@ expand_function_end (void) /* If we had calls to alloca, and this machine needs an accurate stack pointer to exit the function, insert some code to save and restore the stack pointer. */ -#ifdef EXIT_IGNORE_STACK - if (! EXIT_IGNORE_STACK) -#endif - if (current_function_calls_alloca) - { - rtx tem = 0; + if (! EXIT_IGNORE_STACK + && current_function_calls_alloca) + { + rtx tem = 0; - emit_stack_save (SAVE_FUNCTION, &tem, parm_birth_insn); - emit_stack_restore (SAVE_FUNCTION, tem, NULL_RTX); - } + emit_stack_save (SAVE_FUNCTION, &tem, parm_birth_insn); + emit_stack_restore (SAVE_FUNCTION, tem, NULL_RTX); + } /* If scalar return value was computed in a pseudo-reg, or was a named return value that got dumped to the stack, copy that to the hard diff --git a/gcc/global.c b/gcc/global.c index 783b96f..d19e87e 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -323,9 +323,7 @@ global_alloc (FILE *file) #endif int need_fp = (! flag_omit_frame_pointer -#ifdef EXIT_IGNORE_STACK || (current_function_calls_alloca && EXIT_IGNORE_STACK) -#endif || FRAME_POINTER_REQUIRED); size_t i; diff --git a/gcc/ra.c b/gcc/ra.c index 2d4ebe3..5884197 100644 --- a/gcc/ra.c +++ b/gcc/ra.c @@ -455,9 +455,7 @@ init_ra (void) #endif int need_fp = (! flag_omit_frame_pointer -#ifdef EXIT_IGNORE_STACK || (current_function_calls_alloca && EXIT_IGNORE_STACK) -#endif || FRAME_POINTER_REQUIRED); ra_colorize_init (); diff --git a/gcc/reload1.c b/gcc/reload1.c index c6fd61e..a739da3 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -3443,7 +3443,6 @@ init_elim_table (void) /* Does this function require a frame pointer? */ frame_pointer_needed = (! flag_omit_frame_pointer -#ifdef EXIT_IGNORE_STACK /* ?? If EXIT_IGNORE_STACK is set, we will not save and restore sp for alloca. So we can't eliminate the frame pointer in that case. At some point, @@ -3451,7 +3450,6 @@ init_elim_table (void) sp-adjusting insns for this case. */ || (current_function_calls_alloca && EXIT_IGNORE_STACK) -#endif || FRAME_POINTER_REQUIRED); num_eliminable = 0; diff --git a/gcc/reorg.c b/gcc/reorg.c index 6a13fe0..46b6657 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -2427,10 +2427,8 @@ fill_simple_delay_slots (int non_jumps_p) #if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM SET_HARD_REG_BIT (needed.regs, HARD_FRAME_POINTER_REGNUM); #endif -#ifdef EXIT_IGNORE_STACK if (! EXIT_IGNORE_STACK || current_function_sp_is_unchanging) -#endif SET_HARD_REG_BIT (needed.regs, STACK_POINTER_REGNUM); } else diff --git a/gcc/resource.c b/gcc/resource.c index 620ee46..240cf23 100644 --- a/gcc/resource.c +++ b/gcc/resource.c @@ -1167,10 +1167,8 @@ init_resource_info (rtx epilogue_insn) #if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM SET_HARD_REG_BIT (end_of_function_needs.regs, HARD_FRAME_POINTER_REGNUM); #endif -#ifdef EXIT_IGNORE_STACK if (! EXIT_IGNORE_STACK || current_function_sp_is_unchanging) -#endif SET_HARD_REG_BIT (end_of_function_needs.regs, STACK_POINTER_REGNUM); } else -- 2.7.4