summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-16 00:06:36 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-16 00:06:36 +0000
commit13c5e7bfc77941b205095c42ac3bf3a03987678e (patch)
treebb744203a591f3b6d08d264bc0f98c12bab6cdbf
parent8ef443aba9ef765a1ca9db0248fb96df7c808795 (diff)
downloadgcc-13c5e7bfc77941b205095c42ac3bf3a03987678e.tar.gz
* 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
-rw-r--r--gcc/ChangeLog15
-rw-r--r--gcc/defaults.h7
-rw-r--r--gcc/doc/tm.texi3
-rw-r--r--gcc/dojump.c2
-rw-r--r--gcc/flow.c8
-rw-r--r--gcc/function.c16
-rw-r--r--gcc/global.c2
-rw-r--r--gcc/ra.c2
-rw-r--r--gcc/reload1.c2
-rw-r--r--gcc/reorg.c2
-rw-r--r--gcc/resource.c2
11 files changed, 31 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index be45849cdbb..91088ab94de 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2003-12-15 Kazu Hirata <kazu@cs.umass.edu>
+
+ * 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 <joern.rennecke@superh.com>
* reload.c (reg_overlap_mentioned_for_reload_p):
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 41fd96d9b29..d540e2809ed 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 5075a4c18b3..1b028f976be 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 8887c498eca..1f938a8dfe7 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 965e9fe6302..023fb1c8350 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 f3c07d2e9ef..618447d5e3b 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 783b96f1f15..d19e87e5ed9 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 2d4ebe3f520..5884197dca2 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 c6fd61ed789..a739da3f9a0 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 6a13fe0634b..46b66577980 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 620ee4651ca..240cf232334 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