This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RESUBMIT: PowerPC -- support single-precision FPU


David Edelsohn wrote:
I committed the attached patch to fixes the problems discovered so far.

This patch adds the TARGET_SINGLE_FLOAT and TARGET_DOUBLE_FLOAT
conditionals in function_arg and function_arg_advance with the correct grouping.

It also reverts the conditionals that added tests for mode where there was
none before, breaking support for other FP modes.

        * 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.

I'm not sure that removing the test for TARGET_SINGLE_FLOAT in USE_FP_FOR_ARG_P is correct. On a target with a single-precision FPU, only SFmode values can be passed in FP regs. This change says that DFmode values are can be passed in FP regs, even if TARGET_DOUBLE_FLOAT is false.

Removing the test in rs6000_function_value() means that
FP_ARG_RETURN will be used to return all FP values.   That's
not correct on a single-precision FPU for DFmode values.

I'll admit to being confused about TFmode.  This seems to
sneak in with DFmode.


-- Michael Eager eager@eagercon.com 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]