rs6000.c (USE_FP_FOR_ARG_P): Revert TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.

* config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
        TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
        (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
        TARGET_SINGLE_FLOAT.
        Revert SCALAR_FLOAT_MODE_P condition.
        (function_arg): Condition on TARGET_DOUBLE_FLOAT,
        TARGET_SINGLE_FLOAT.
        (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
        TARGET_SINGLE_FLOAT.

From-SVN: r140838
This commit is contained in:
David Edelsohn 2008-10-02 18:53:04 +00:00 committed by David Edelsohn
parent 414f00e997
commit 56f4cc0462
2 changed files with 21 additions and 14 deletions

View File

@ -1,3 +1,15 @@
2008-10-02 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
(function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
TARGET_SINGLE_FLOAT.
Revert SCALAR_FLOAT_MODE_P condition.
(function_arg): Condition on TARGET_DOUBLE_FLOAT,
TARGET_SINGLE_FLOAT.
(rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
TARGET_SINGLE_FLOAT.
2008-10-02 Daniel Jacobowitz <dan@codesourcery.com>
* builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.

View File

@ -5249,9 +5249,7 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
#define USE_FP_FOR_ARG_P(CUM,MODE,TYPE) \
(SCALAR_FLOAT_MODE_P (MODE) \
&& (CUM)->fregno <= FP_ARG_MAX_REG \
&& TARGET_HARD_FLOAT && TARGET_FPRS \
&& ((TARGET_DOUBLE_FLOAT && (MODE) == DFmode)\
|| (TARGET_SINGLE_FLOAT && (MODE) == SFmode)))
&& TARGET_HARD_FLOAT && TARGET_FPRS)
/* Nonzero if we can use an AltiVec register to pass this arg. */
#define USE_ALTIVEC_FOR_ARG_P(CUM,MODE,TYPE,NAMED) \
@ -5728,9 +5726,10 @@ function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
else if (DEFAULT_ABI == ABI_V4)
{
if (TARGET_HARD_FLOAT && TARGET_FPRS
&& (mode == SFmode || mode == DFmode
|| mode == SDmode || mode == DDmode || mode == TDmode
|| (mode == TFmode && !TARGET_IEEEQUAD)))
&& ((TARGET_SINGLE_FLOAT && mode == SFmode)
|| (TARGET_DOUBLE_FLOAT && mode == DFmode)
|| (mode == TFmode && !TARGET_IEEEQUAD)
|| mode == SDmode || mode == DDmode || mode == TDmode))
{
/* _Decimal128 must use an even/odd register pair. This assumes
that the register number is odd when fregno is odd. */
@ -5796,9 +5795,7 @@ function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
cum->words = align_words + n_words;
if (SCALAR_FLOAT_MODE_P (mode)
&& TARGET_HARD_FLOAT && TARGET_FPRS
&& ((TARGET_DOUBLE_FLOAT && mode == DFmode)
|| (TARGET_SINGLE_FLOAT && mode == SFmode)))
&& TARGET_HARD_FLOAT && TARGET_FPRS)
{
/* _Decimal128 must be passed in an even/odd float register pair.
This assumes that the register number is odd when fregno is
@ -6292,7 +6289,8 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode,
else if (abi == ABI_V4)
{
if (TARGET_HARD_FLOAT && TARGET_FPRS
&& (mode == SFmode || mode == DFmode
&& ((TARGET_SINGLE_FLOAT && mode == SFmode)
|| (TARGET_DOUBLE_FLOAT && mode == DFmode)
|| (mode == TFmode && !TARGET_IEEEQUAD)
|| mode == SDmode || mode == DDmode || mode == TDmode))
{
@ -22522,10 +22520,7 @@ rs6000_function_value (const_tree valtype, const_tree func ATTRIBUTE_UNUSED)
if (DECIMAL_FLOAT_MODE_P (mode) && TARGET_HARD_FLOAT && TARGET_FPRS)
/* _Decimal128 must use an even/odd register pair. */
regno = (mode == TDmode) ? FP_ARG_RETURN + 1 : FP_ARG_RETURN;
else if (SCALAR_FLOAT_TYPE_P (valtype) && TARGET_FPRS
&& (TARGET_HARD_FLOAT
&& ((TARGET_SINGLE_FLOAT && mode == SFmode)
|| TARGET_DOUBLE_FLOAT)))
else if (SCALAR_FLOAT_TYPE_P (valtype) && TARGET_HARD_FLOAT && TARGET_FPRS)
regno = FP_ARG_RETURN;
else if (TREE_CODE (valtype) == COMPLEX_TYPE
&& targetm.calls.split_complex_arg)