diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-03-09 15:49:12 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-03-09 08:49:12 -0700 |
commit | 39842893a1d85009d64f29d653b8291d9257648b (patch) | |
tree | 927487c5569fd7b5bd3e13ac22b5e59849a1eb7b | |
parent | 89b21b680c3dcbd328c15663624e4e44a8f1da25 (diff) | |
download | gcc-39842893a1d85009d64f29d653b8291d9257648b.zip gcc-39842893a1d85009d64f29d653b8291d9257648b.tar.gz gcc-39842893a1d85009d64f29d653b8291d9257648b.tar.bz2 |
* calls.c (expand_call): Slightly reorganize code.
From-SVN: r25655
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/calls.c | 23 |
2 files changed, 13 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index afbc926..2a5b2a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -15,6 +15,8 @@ Tue Mar 9 09:33:16 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> Tue Mar 9 02:08:17 1999 Jeffrey A Law (law@cygnus.com) + * calls.c (expand_call): Slightly reorganize code. + * calls.c (compute_argument_addresses): New function. (rtx_for_function_call): New function. (expand_call): Use them. diff --git a/gcc/calls.c b/gcc/calls.c index a30bde9..e45c3c2 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1754,11 +1754,6 @@ expand_call (exp, target, ignore) mark_addressable (fndecl); } - /* When calling a const function, we must pop the stack args right away, - so that the pop is deleted or moved with the call. */ - if (is_const) - NO_DEFER_POP; - function_call_count++; if (fndecl && DECL_NAME (fndecl)) @@ -1772,6 +1767,17 @@ expand_call (exp, target, ignore) if (may_be_alloca) current_function_calls_alloca = 1; + /* Operand 0 is a pointer-to-function; get the type of the function. */ + funtype = TREE_TYPE (TREE_OPERAND (exp, 0)); + if (! POINTER_TYPE_P (funtype)) + abort (); + funtype = TREE_TYPE (funtype); + + /* When calling a const function, we must pop the stack args right away, + so that the pop is deleted or moved with the call. */ + if (is_const) + NO_DEFER_POP; + /* Don't let pending stack adjusts add up to too much. Also, do all pending adjustments now if there is any chance this might be a call to alloca. */ @@ -1780,13 +1786,6 @@ expand_call (exp, target, ignore) || (pending_stack_adjust > 0 && may_be_alloca)) do_pending_stack_adjust (); - /* Operand 0 is a pointer-to-function; get the type of the function. */ - funtype = TREE_TYPE (TREE_OPERAND (exp, 0)); - if (! POINTER_TYPE_P (funtype)) - abort (); - - funtype = TREE_TYPE (funtype); - /* Push the temporary stack slot level so that we can free any temporaries we make. */ push_temp_slots (); |