OSDN Git Service

* calls.c (expand_call): Provide init for old_stack_pointer_delta.
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Apr 2003 11:56:13 +0000 (11:56 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Apr 2003 11:56:13 +0000 (11:56 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65814 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c

index fa80d37..c95cfd8 100644 (file)
@@ -1,3 +1,7 @@
+2003-04-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * calls.c (expand_call): Provide init for old_stack_pointer_delta.
+
 2003-04-19  Nathan Sidwell  <nathan@codesourcery.com>
 
        * doc/invoke.texi (-fprofile-arcs): Mention -lgcov, locking and
index 42e2bf7..ed92ce7 100644 (file)
@@ -2212,7 +2212,7 @@ expand_call (exp, target, ignore)
   /* Some stack pointer alterations we make are performed via
      allocate_dynamic_stack_space. This modifies the stack_pointer_delta,
      which we then also need to save/restore along the way.  */
-  int old_stack_pointer_delta;
+  int old_stack_pointer_delta = 0;
 
   rtx call_fusage;
   tree p = TREE_OPERAND (exp, 0);
@@ -2515,6 +2515,10 @@ expand_call (exp, target, ignore)
          optimized.  */
       || (flags & (ECF_RETURNS_TWICE | ECF_LONGJMP | ECF_NORETURN))
       || TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (addr)))
+      /* If the called function is nested in the current one, it might access
+         some of the caller's arguments, but could clobber them beforehand if
+         the argument areas are shared.  */
+       || decl_function_context (fndecl) == current_function_decl
       /* If this function requires more stack slots than the current
         function, we cannot change it into a sibling call.  */
       || args_size.constant > current_function_args_size