aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-10-08 22:29:17 +0000
committerRichard Stallman <rms@gnu.org>1993-10-08 22:29:17 +0000
commit4f38921423b6dfe7c52ff357584ac4650fee3220 (patch)
treec21cfed0974e315cff7746336fa85cb37316a692 /gcc
parentf0dbe37245ed4762dbe6ebb7d00c349b4fb91db2 (diff)
downloadgcc-4f38921423b6dfe7c52ff357584ac4650fee3220.zip
gcc-4f38921423b6dfe7c52ff357584ac4650fee3220.tar.gz
gcc-4f38921423b6dfe7c52ff357584ac4650fee3220.tar.bz2
(emit_library_call_value): Compute struct_value_size,
and pass it to emit_call_1. From-SVN: r5689
Diffstat (limited to 'gcc')
-rw-r--r--gcc/calls.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 286dcdd..620c1b1 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2353,6 +2353,7 @@ emit_library_call_value (va_alist)
rtx value;
rtx mem_value = 0;
int pcc_struct_value = 0;
+ int struct_value_size = 0;
/* library calls are never indirect calls. */
int current_call_is_indirect = 0;
@@ -2376,6 +2377,7 @@ emit_library_call_value (va_alist)
if (value == 0)
value = gen_reg_rtx (outmode);
#else /* not PCC_STATIC_STRUCT_RETURN */
+ struct_value_size = GET_MODE_SIZE (outmode);
if (value != 0 && GET_CODE (value) == MEM)
mem_value = value;
else
@@ -2662,7 +2664,8 @@ emit_library_call_value (va_alist)
/* We pass the old value of inhibit_defer_pop + 1 to emit_call_1, which
will set inhibit_defer_pop to that value. */
- emit_call_1 (fun, get_identifier (XSTR (orgfun, 0)), args_size.constant, 0,
+ emit_call_1 (fun, get_identifier (XSTR (orgfun, 0)), args_size.constant,
+ struct_value_size,
FUNCTION_ARG (args_so_far, VOIDmode, void_type_node, 1),
(outmode != VOIDmode && mem_value == 0
? hard_libcall_value (outmode) : NULL_RTX),