aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-04-06 07:14:17 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-04-06 07:14:17 -0400
commit8b0f91011f1ed67e185e3b777a663858d1631821 (patch)
tree9d2505e2ca71acbaa2fdd93a418d367b9fef527b /gcc
parent1923e516f4394c09231d6a62dc0c1d641051827e (diff)
downloadgcc-8b0f91011f1ed67e185e3b777a663858d1631821.zip
gcc-8b0f91011f1ed67e185e3b777a663858d1631821.tar.gz
gcc-8b0f91011f1ed67e185e3b777a663858d1631821.tar.bz2
(emit_library_call): Move the invocation of prepare_call_address before the assignments of the function arguments.
(emit_library_call): Move the invocation of prepare_call_address before the assignments of the function arguments. (emit_library_call_value): Likewise. From-SVN: r6978
Diffstat (limited to 'gcc')
-rw-r--r--gcc/calls.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index c02c732..1ac4fee 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1770,6 +1770,8 @@ expand_call (exp, target, ignore)
}
}
+ funexp = prepare_call_address (funexp, fndecl, &use_insns);
+
/* Now do the register loads required for any wholly-register parms or any
parms which are passed both on the stack and in a register. Their
expressions were already evaluated.
@@ -1844,8 +1846,6 @@ expand_call (exp, target, ignore)
/* All arguments and registers used for the call must be set up by now! */
- funexp = prepare_call_address (funexp, fndecl, &use_insns);
-
/* Generate the actual call instruction. */
emit_call_1 (funexp, funtype, args_size.constant, struct_value_size,
FUNCTION_ARG (args_so_far, VOIDmode, void_type_node, 1),
@@ -2324,6 +2324,8 @@ emit_library_call VPROTO((rtx orgfun, int no_queue, enum machine_mode outmode,
argnum = 0;
#endif
+ fun = prepare_call_address (fun, NULL_TREE, &use_insns);
+
/* Now load any reg parms into their regs. */
for (count = 0; count < nargs; count++, argnum += inc)
@@ -2351,8 +2353,6 @@ emit_library_call VPROTO((rtx orgfun, int no_queue, enum machine_mode outmode,
use_insns = get_insns ();
end_sequence ();
- fun = prepare_call_address (fun, NULL_TREE, &use_insns);
-
/* Don't allow popping to be deferred, since then
cse'ing of library calls could delete a call and leave the pop. */
NO_DEFER_POP;
@@ -2670,6 +2670,8 @@ emit_library_call_value VPROTO((rtx orgfun, rtx value, int no_queue,
argnum = 0;
#endif
+ fun = prepare_call_address (fun, NULL_TREE, &use_insns);
+
/* Now load any reg parms into their regs. */
for (count = 0; count < nargs; count++, argnum += inc)
@@ -2715,8 +2717,6 @@ emit_library_call_value VPROTO((rtx orgfun, rtx value, int no_queue,
}
}
- fun = prepare_call_address (fun, NULL_TREE, &use_insns);
-
/* Don't allow popping to be deferred, since then
cse'ing of library calls could delete a call and leave the pop. */
NO_DEFER_POP;