Commit 58533fa2 by Richard Henderson Committed by Richard Henderson

* function.c: Revert patch for c/6358.

From-SVN: r52511
parent 0cd3301b
2002-04-18 Richard Henderson <rth@redhat.com>
* ifcvt.c (find_cond_trap): Handle cases with no proper THEN or JOIN
blocks. Handle multiple references to the TRAP block. Handle
non-adjacent THEN and OTHER blocks.
* function.c: Revert patch for c/6358.
2002-04-18 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): Don't
crash with no type for by-mode libcalls.
* ifcvt.c (find_cond_trap): Handle cases with no proper THEN or JOIN
blocks. Handle multiple references to the TRAP block. Handle
non-adjacent THEN and OTHER blocks.
* config/ia64/ia64.md (conditional_trap): Fix predicate polarity.
2002-04-18 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): Don't
crash with no type for by-mode libcalls.
* config/ia64/ia64.md (conditional_trap): Fix predicate polarity.
2002-04-18 Bob Wilson <bob.wilson@acm.org>
......
......@@ -5145,35 +5145,6 @@ assign_parms (fndecl)
current_function_return_rtx
= (DECL_RTL_SET_P (DECL_RESULT (fndecl))
? DECL_RTL (DECL_RESULT (fndecl)) : NULL_RTX);
/* If scalar return value was computed in a pseudo-reg, or was a named
return value that got dumped to the stack, copy that to the hard
return register. */
if (DECL_RTL_SET_P (DECL_RESULT (fndecl)))
{
tree decl_result = DECL_RESULT (fndecl);
rtx decl_rtl = DECL_RTL (decl_result);
if (REG_P (decl_rtl)
? REGNO (decl_rtl) >= FIRST_PSEUDO_REGISTER
: DECL_REGISTER (decl_result))
{
rtx real_decl_rtl;
#ifdef FUNCTION_OUTGOING_VALUE
real_decl_rtl = FUNCTION_OUTGOING_VALUE (TREE_TYPE (decl_result),
fndecl);
#else
real_decl_rtl = FUNCTION_VALUE (TREE_TYPE (decl_result),
fndecl);
#endif
REG_FUNCTION_VALUE_P (real_decl_rtl) = 1;
/* The delay slot scheduler assumes that current_function_return_rtx
holds the hard register containing the return value, not a
temporary pseudo. */
current_function_return_rtx = real_decl_rtl;
}
}
}
/* Indicate whether REGNO is an incoming argument to the current function
......@@ -6987,11 +6958,16 @@ expand_function_end (filename, line, end_bindings)
? REGNO (decl_rtl) >= FIRST_PSEUDO_REGISTER
: DECL_REGISTER (decl_result))
{
rtx real_decl_rtl = current_function_return_rtx;
rtx real_decl_rtl;
/* This should be set in assign_parms. */
if (! REG_FUNCTION_VALUE_P (real_decl_rtl))
abort ();
#ifdef FUNCTION_OUTGOING_VALUE
real_decl_rtl = FUNCTION_OUTGOING_VALUE (TREE_TYPE (decl_result),
current_function_decl);
#else
real_decl_rtl = FUNCTION_VALUE (TREE_TYPE (decl_result),
current_function_decl);
#endif
REG_FUNCTION_VALUE_P (real_decl_rtl) = 1;
/* If this is a BLKmode structure being returned in registers,
then use the mode computed in expand_return. Note that if
......@@ -7019,6 +6995,11 @@ expand_function_end (filename, line, end_bindings)
int_size_in_bytes (TREE_TYPE (decl_result)));
else
emit_move_insn (real_decl_rtl, decl_rtl);
/* The delay slot scheduler assumes that current_function_return_rtx
holds the hard register containing the return value, not a
temporary pseudo. */
current_function_return_rtx = real_decl_rtl;
}
}
......
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