Commit ea2d416a by Richard Henderson

flow.c (mark_regs_live_at_end): Follow expand_function_end and replace BLKmode…

flow.c (mark_regs_live_at_end): Follow expand_function_end and replace BLKmode with DECL_RTL's mode.

        * flow.c (mark_regs_live_at_end): Follow expand_function_end and
        replace BLKmode with DECL_RTL's mode.

From-SVN: r31754
parent eca1bd08
2000-02-01 Richard Henderson <rth@cygnus.com>
* flow.c (mark_regs_live_at_end): Follow expand_function_end and
replace BLKmode with DECL_RTL's mode.
2000-02-01 Zack Weinberg <zack@wolery.cumb.org> 2000-02-01 Zack Weinberg <zack@wolery.cumb.org>
* frame.c (find_fde): Convert for loop to do-while so compiler * frame.c (find_fde): Convert for loop to do-while so compiler
......
...@@ -2809,7 +2809,7 @@ static void ...@@ -2809,7 +2809,7 @@ static void
mark_regs_live_at_end (set) mark_regs_live_at_end (set)
regset set; regset set;
{ {
tree type; tree result, type;
int i; int i;
/* If exiting needs the right stack value, consider the stack pointer /* If exiting needs the right stack value, consider the stack pointer
...@@ -2868,22 +2868,22 @@ mark_regs_live_at_end (set) ...@@ -2868,22 +2868,22 @@ mark_regs_live_at_end (set)
/* Mark function return value. */ /* Mark function return value. */
type = TREE_TYPE (DECL_RESULT (current_function_decl)); result = DECL_RESULT (current_function_decl);
type = TREE_TYPE (result);
if (type != void_type_node) if (type != void_type_node)
{ {
rtx outgoing; rtx outgoing;
if (current_function_returns_struct /* ??? Share this code with expand_function_end. */
|| current_function_returns_pcc_struct)
type = build_pointer_type (type);
#ifdef FUNCTION_OUTGOING_VALUE #ifdef FUNCTION_OUTGOING_VALUE
outgoing = FUNCTION_OUTGOING_VALUE (type, current_function_decl); outgoing = FUNCTION_OUTGOING_VALUE (type, current_function_decl);
#else #else
outgoing = FUNCTION_VALUE (type, current_function_decl); outgoing = FUNCTION_VALUE (type, current_function_decl);
#endif #endif
/* If this is a BLKmode structure being returned in registers,
then use the mode computed in expand_return. */
if (GET_MODE (outgoing) == BLKmode) if (GET_MODE (outgoing) == BLKmode)
PUT_MODE (outgoing, DECL_MODE (DECL_RESULT (current_function_decl))); PUT_MODE (outgoing, GET_MODE (DECL_RTL (result)));
if (GET_CODE (outgoing) == REG) if (GET_CODE (outgoing) == REG)
mark_reg (set, outgoing); mark_reg (set, outgoing);
......
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