OSDN Git Service

* calls.c (expand_call): Handle current_function_pretend_args_size
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 May 2005 18:18:37 +0000 (18:18 +0000)
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 May 2005 18:18:37 +0000 (18:18 +0000)
when checking for sibcalls.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99113 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c

index 20bf784..5090358 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * calls.c (expand_call): Handle current_function_pretend_args_size
+       when checking for sibcalls.
+
 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
 
        PR tree-optimization/21294
index df9c734..2739832 100644 (file)
@@ -2197,8 +2197,11 @@ expand_call (tree exp, rtx target, int ignore)
          the argument areas are shared.  */
       || (fndecl && 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
+        function, we cannot change it into a sibling call.
+        current_function_pretend_args_size is not part of the
+        stack allocated by our caller.  */
+      || args_size.constant > (current_function_args_size
+                              - current_function_pretend_args_size)
       /* If the callee pops its own arguments, then it must pop exactly
         the same number of arguments as the current function.  */
       || (RETURN_POPS_ARGS (fndecl, funtype, args_size.constant)