aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-02-11 00:18:51 +0000
committerJeff Law <law@gcc.gnu.org>1998-02-10 17:18:51 -0700
commit0200b5ed0ac6d2285f2d473c6cf4f069819f135b (patch)
tree6672c19c51874af310b6d048b40dbd836792ee7c
parentc29c4e238eec39652ffbcece7250746f3b3de66c (diff)
downloadgcc-0200b5ed0ac6d2285f2d473c6cf4f069819f135b.zip
gcc-0200b5ed0ac6d2285f2d473c6cf4f069819f135b.tar.gz
gcc-0200b5ed0ac6d2285f2d473c6cf4f069819f135b.tar.bz2
flow.c (life_analysis): Do not conside the stack pointer live at the end of a function if...
* flow.c (life_analysis): Do not conside the stack pointer live at the end of a function if the fucntio ncalls alloca. (mark_used_regs): Similarly. From-SVN: r17839
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/flow.c8
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8e151a0..6841d39 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Wed Feb 11 01:17:39 1998 Jeffrey A Law (law@cygnus.com)
+
+ * flow.c (life_analysis): Do not conside the stack pointer live at
+ the end of a function if the fucntio ncalls alloca.
+ (mark_used_regs): Similarly.
+
1998-02-10 John F Carr <jfc@mit.edu>
* config/sparc/sparc.md (movdi_v8plus): Output stx on alternative
diff --git a/gcc/flow.c b/gcc/flow.c
index 4769feb..3895f53 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -1094,7 +1094,9 @@ life_analysis (f, nregs)
if (n_basic_blocks > 0)
#ifdef EXIT_IGNORE_STACK
if (! EXIT_IGNORE_STACK
- || (! FRAME_POINTER_REQUIRED && flag_omit_frame_pointer))
+ || (! FRAME_POINTER_REQUIRED
+ && ! current_function_calls_alloca
+ && flag_omit_frame_pointer))
#endif
{
/* If exiting needs the right stack value,
@@ -2656,7 +2658,9 @@ mark_used_regs (needed, live, x, final, insn)
#ifdef EXIT_IGNORE_STACK
if (! EXIT_IGNORE_STACK
- || (! FRAME_POINTER_REQUIRED && flag_omit_frame_pointer))
+ || (! FRAME_POINTER_REQUIRED
+ && ! current_function_calls_alloca
+ && flag_omit_frame_pointer))
#endif
SET_REGNO_REG_SET (live, STACK_POINTER_REGNUM);