This is the mail archive of the gcc@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: Bugs in MIPS FUNCTION_ARG_REGNO_P ?


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


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