+1999-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ * explow.c (hard_function_value): Add outgoing argument.
+ * expr.h (hard_function_value): Declare it.
+ * calls.c (expand_call, emit_library_call_value): Update callers.
+ * function.c (aggregate_value_p): Ditto.
+ (diddle_return_value): Must look at the outgoing registers
+ on archs with register windows.
+
Mon Nov 15 20:46:45 1999 Richard Henderson <rth@cygnus.com>
* alpha.c (alpha_build_va_list): Use make_lang_type and
Based on proposed addition from David Edelsohn.
1999-11-15 Robert Lipe <RobertLipe@usa.net>
- Bruce Korb <autogen@linuxbox.com>
+ Bruce Korb <autogen@linuxbox.com>
* fixinc/inclhack.def
(AAB_svr4_replace_byteorder): added. Takes advantage of GCC features
Fri Nov 12 08:04:45 1999 Catherine Moore <clm@cygnus.com>
* defaults.h (ASM_OUTPUT_ALTERNATE_LABEL_NAME): Use
- ASM_OUTPUT_LABEL.
+ ASM_OUTPUT_LABEL.
Fri Nov 12 13:31:54 1999 Bernd Schmidt <bernds@cygnus.co.uk>
worklists. Fix boundary cases. Compute maximal solutions.
(compute_laterin, compute_nearerout): Similarly.
- * dwarf2out.c (add_AT_location_description): Allow
- (mem (plus (pseudo) (...)) too.
+ * dwarf2out.c (add_AT_location_description): Allow
+ (mem (plus (pseudo) (...)) too.
Wed Nov 10 10:52:42 1999 Tom Tromey <tromey@cygnus.com>
* gcc.c (do_spec_1): Support text between `%u' and `%O'.
Wed Nov 10 12:43:21 1999 Philippe De Muyter <phdm@macqel.be>
- Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+ Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cppinit.c: Test `GCC_VERSION', not `HAVE_GCC_VERSION'.
Wed Nov 10 00:02:53 1999 Jeffrey A Law (law@cygnus.com)
- * flow.c (compute_flow_dominators): No longer treat basic block 0
- or (n_basic_blocks - 1) specially. Clear the AUX field before
- starting computation of doms/pdoms. Fix initial state for pdoms.
+ * flow.c (compute_flow_dominators): No longer treat basic block 0
+ or (n_basic_blocks - 1) specially. Clear the AUX field before
+ starting computation of doms/pdoms. Fix initial state for pdoms.
Wed Nov 10 03:58:08 1999 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
Sun Nov 7 19:41:17 1999 Catherine Moore <clm@cygnus.com>
- * config/elfos.h (ASM_DECLARE_FUNCTION_NAME): Conditionally define.
- (ASM_DECLARE_FUNCTION_SIZE): Conditionally define.
+ * config/elfos.h (ASM_DECLARE_FUNCTION_NAME): Conditionally define.
+ (ASM_DECLARE_FUNCTION_SIZE): Conditionally define.
Sun Nov 7 10:23:28 1999 Mark P. Mitchell <mark@codesourcery.com>
Sat Nov 6 07:48:59 1999 Catherine Moore <clm@cygnus.com>
- * config/svr4.h (ASM_DECLARE_FUNCTION): Check if already
- defined.
- (ASM_DECLARE_FUNCTION_SIZE): Likewise.
+ * config/svr4.h (ASM_DECLARE_FUNCTION): Check if already
+ defined.
+ (ASM_DECLARE_FUNCTION_SIZE): Likewise.
Fri Nov 5 18:33:39 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
{
if (pcc_struct_value)
valreg = hard_function_value (build_pointer_type (TREE_TYPE (exp)),
- fndecl);
+ fndecl, 0);
else
- valreg = hard_function_value (TREE_TYPE (exp), fndecl);
+ valreg = hard_function_value (TREE_TYPE (exp), fndecl, 0);
}
/* Precompute all register parameters. It isn't safe to compute anything
#ifdef PCC_STATIC_STRUCT_RETURN
rtx pointer_reg
= hard_function_value (build_pointer_type (type_for_mode (outmode, 0)),
- 0);
+ 0, 0);
mem_value = gen_rtx_MEM (outmode, pointer_reg);
pcc_struct_value = 1;
if (value == 0)
in which a scalar value of data type VALTYPE
was returned by a function call to function FUNC.
FUNC is a FUNCTION_DECL node if the precise function is known,
- otherwise 0. */
+ otherwise 0.
+ OUTGOING is 1 if on a machine with register windows this function
+ should return the register in which the function will put its result
+ and 0 otherwise. */
rtx
-hard_function_value (valtype, func)
+hard_function_value (valtype, func, outgoing)
tree valtype;
tree func ATTRIBUTE_UNUSED;
+ int outgoing ATTRIBUTE_UNUSED;
{
- rtx val = FUNCTION_VALUE (valtype, func);
+ rtx val;
+#ifdef FUNCTION_OUTGOING_VALUE
+ if (outgoing)
+ val = FUNCTION_OUTGOING_VALUE (valtype, func);
+ else
+#endif
+ val = FUNCTION_VALUE (valtype, func);
if (GET_CODE (val) == REG
&& GET_MODE (val) == BLKmode)
{
return 1;
/* Make sure we have suitable call-clobbered regs to return
the value in; if not, we must return it in memory. */
- reg = hard_function_value (type, 0);
+ reg = hard_function_value (type, 0, 0);
/* If we have something other than a REG (e.g. a PARALLEL), then assume
it is OK. */
/* Use hard_function_value to avoid creating a reference to a BLKmode
register in the USE/CLOBBER insn. */
return_reg = hard_function_value (TREE_TYPE (decl_result),
- current_function_decl);
+ current_function_decl, 1);
REG_FUNCTION_VALUE_P (return_reg) = 1;
emit_insn (gen_rtx_fmt_e (code, VOIDmode, return_reg));
}