aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@codesourcery.com>2005-05-02 18:18:37 +0000
committerDaniel Jacobowitz <drow@gcc.gnu.org>2005-05-02 18:18:37 +0000
commitff7f012ac0aa90d0b8f540a01844ecc158b2d740 (patch)
treefb2abd6911b608b6f622fb9e5a9ac465b88f1745 /gcc
parentfda05890956b883a25ea35edfa65db76a50c3da3 (diff)
downloadgcc-ff7f012ac0aa90d0b8f540a01844ecc158b2d740.zip
gcc-ff7f012ac0aa90d0b8f540a01844ecc158b2d740.tar.gz
gcc-ff7f012ac0aa90d0b8f540a01844ecc158b2d740.tar.bz2
calls.c (expand_call): Handle current_function_pretend_args_size when checking for sibcalls.
* calls.c (expand_call): Handle current_function_pretend_args_size when checking for sibcalls. From-SVN: r99113
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/calls.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20bf784..5090358 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/calls.c b/gcc/calls.c
index df9c734..2739832 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -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)