Commit 3c6088d2 by Jakub Jelinek Committed by David S. Miller

sparc.c (function_value): Perform the equivalent of PROMOTE_MODE for ARCH64.

Thu Sep 24 15:08:08 1998  Jakub Jelinek  <jj@sunsite.ms.mff.cuni.cz>
	* config/sparc/sparc.c (function_value): Perform the equivalent of
	PROMOTE_MODE for ARCH64.
	(eligible_for_epilogue_delay): Allow DImode operations in delay
	slot of a return for ARCH64.

From-SVN: r22573
parent 71187870
Thu Sep 24 15:08:08 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
* config/sparc/sparc.c (function_value): Perform the equivalent of
PROMOTE_MODE for ARCH64.
(eligible_for_epilogue_delay): Allow DImode operations in delay
slot of a return for ARCH64.
Thu Sep 24 22:17:54 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.md (sqrtsf2): Fix mode of sqrt.
......
......@@ -2259,9 +2259,14 @@ eligible_for_epilogue_delay (trial, slot)
src = SET_SRC (pat);
/* This matches "*return_[qhs]i". */
/* This matches "*return_[qhs]i" or even "*return_di" on TARGET_ARCH64. */
if (arith_operand (src, GET_MODE (src)))
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (SImode);
{
if (TARGET_ARCH64)
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
else
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (SImode);
}
/* This matches "*return_di". */
else if (arith_double_operand (src, GET_MODE (src)))
......@@ -4232,6 +4237,12 @@ function_value (type, mode, incoming_p)
mode = mode_for_size (bytes * BITS_PER_UNIT, MODE_INT, 0);
}
}
if (TARGET_ARCH64
&& GET_MODE_CLASS (mode) == MODE_INT
&& GET_MODE_SIZE (mode) < UNITS_PER_WORD
&& type && TREE_CODE (type) != UNION_TYPE)
mode = DImode;
if (incoming_p)
regno = BASE_RETURN_VALUE_REG (mode);
......
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