aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-03-09 15:49:12 +0000
committerJeff Law <law@gcc.gnu.org>1999-03-09 08:49:12 -0700
commit39842893a1d85009d64f29d653b8291d9257648b (patch)
tree927487c5569fd7b5bd3e13ac22b5e59849a1eb7b /gcc
parent89b21b680c3dcbd328c15663624e4e44a8f1da25 (diff)
downloadgcc-39842893a1d85009d64f29d653b8291d9257648b.zip
gcc-39842893a1d85009d64f29d653b8291d9257648b.tar.gz
gcc-39842893a1d85009d64f29d653b8291d9257648b.tar.bz2
* calls.c (expand_call): Slightly reorganize code.
From-SVN: r25655
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/calls.c23
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 ();