[PATCHv2][MIPS] Implement O32 ABI extensions (GCC)

Matthew Fortune Matthew.Fortune@imgtec.com
Tue Oct 28 17:28:00 GMT 2014


Moore, Catherine <Catherine_Moore@mentor.com> writes:
> Review comments are attached.  I will tackle the R6 patch next.
> Thanks,
> Catherine

Thanks Catherine. Depending on whether the fix to the following
hunk needs discussion I'll make the changes and commit.

>> static bool
>> mips_function_value_regno_p (const unsigned int regno)
>> {
>>   if (regno == GP_RETURN
>>       || regno == FP_RETURN
>>+      || regno == FP_RETURN + 2
>>       || (LONG_DOUBLE_TYPE_SIZE == 128
>> 	  && FP_RETURN != GP_RETURN
>> 	  && regno == FP_RETURN + 2))
>>     return true;
>> 
>  Is this right? I'm  not following the intent of this modification.

The intent is to cover the complex return case where both FP_RETURN
and FP_RETURN+2 are used to return the real and imaginary parts of
_Complex float. The hunk which follows then deals with the
_Complex double case where the corresponding odd numbered registers
are also used for FP32. What I noticed when you first pointed me
at this code on IRC was that the new condition leads to the
pre-existing LONG_DOUBLE_TYPE_SIZE condition being redundant so
should be removed I think. I just want to re-read how these functions
are used to reassure myself this is all correct.

I'll also check on whether o32 or O32 is the consistent name and
change appropriately.

For the R6 patch. I will be rebasing and updating that patch following
submission of FPXX but the only significant fix it needs relates to
allowing the use of DSP with R6. That will affect the conditions on
a few patterns and some of the expand code. A general read through the
current patch on the list wouldn't be wasted though.

Thanks,
Matthew



More information about the Gcc-patches mailing list