Commit 4f389214 by Richard Stallman

(emit_library_call_value): Compute struct_value_size,

and pass it to emit_call_1.

From-SVN: r5689
parent f0dbe372
...@@ -2353,6 +2353,7 @@ emit_library_call_value (va_alist) ...@@ -2353,6 +2353,7 @@ emit_library_call_value (va_alist)
rtx value; rtx value;
rtx mem_value = 0; rtx mem_value = 0;
int pcc_struct_value = 0; int pcc_struct_value = 0;
int struct_value_size = 0;
/* library calls are never indirect calls. */ /* library calls are never indirect calls. */
int current_call_is_indirect = 0; int current_call_is_indirect = 0;
...@@ -2376,6 +2377,7 @@ emit_library_call_value (va_alist) ...@@ -2376,6 +2377,7 @@ emit_library_call_value (va_alist)
if (value == 0) if (value == 0)
value = gen_reg_rtx (outmode); value = gen_reg_rtx (outmode);
#else /* not PCC_STATIC_STRUCT_RETURN */ #else /* not PCC_STATIC_STRUCT_RETURN */
struct_value_size = GET_MODE_SIZE (outmode);
if (value != 0 && GET_CODE (value) == MEM) if (value != 0 && GET_CODE (value) == MEM)
mem_value = value; mem_value = value;
else else
...@@ -2662,7 +2664,8 @@ emit_library_call_value (va_alist) ...@@ -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 /* We pass the old value of inhibit_defer_pop + 1 to emit_call_1, which
will set inhibit_defer_pop to that value. */ 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), FUNCTION_ARG (args_so_far, VOIDmode, void_type_node, 1),
(outmode != VOIDmode && mem_value == 0 (outmode != VOIDmode && mem_value == 0
? hard_libcall_value (outmode) : NULL_RTX), ? hard_libcall_value (outmode) : NULL_RTX),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment