Bugs in MIPS FUNCTION_ARG_REGNO_P ?
Mark Mitchell
mark@codesourcery.com
Wed Mar 3 07:25:00 GMT 2004
Eric Christopher wrote:
> On Tue, 2004-03-02 at 19:05, Mark Mitchell wrote:
>
>>Eric --
>>
>>If I read this correctly:
>>
>>#define FUNCTION_ARG_REGNO_P(N) \
>> ((IN_RANGE((N), GP_ARG_FIRST, GP_ARG_LAST) \
>> || (IN_RANGE((N), FP_ARG_FIRST, FP_ARG_LAST) \
>> && ((N) % FP_INC == 0) && mips_abi != ABI_O64)) \
>> && !fixed_regs[N])
>>
>>it says that floating-point registers are never used for
>>argument-passing in the O64 ABI. That doesn't seem right.
>
>
> It's been that way for quite some time. I believe it to be correct,
> however, Jim would know best if he remembers.
What exactly do you believe to be correct? The macro implementation, or
the statement that the O64 ABI does not use floating-point registers for
arugment-passing?
The latter statement does not match what the rest of the compiler does
-- compiling test programs with -mabi=o64 shows that $f12, $f13, $f14
are are used for floating-point arguments, and there are comments to
that effect in the code.
So, I guess you believe the macro to be correct? I'm confused as to how
that could be, since it seems never to return true for a floating-point
register when using the O64 ABI.
Well, perhaps Jim can shed some lite, as you say.
Thanks for looking at it!
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
More information about the Gcc
mailing list