Hi Richard,

Is my patch OK?

Thanks.


H.J.
----
On Sun, Jul 10, 2011 at 6:14 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Sun, Jul 10, 2011 at 5:48 PM, Richard Henderson <r...@redhat.com> wrote:
>> On 07/10/2011 03:01 PM, H.J. Lu wrote:
>>> We only want to promote function parameters passed/returned in register.
>>> But  I can't tell if a value will be passed in register or memory inside of
>>> TARGET_FUNCTION_VALUE.  So when FOR_RETURN is 1, we don't
>>> promote. Even if we don't promote it explicitly, hardware still zero-extends
>>> it for us. So it isn't a real issue.
>>
>> The hardware *usually* zero-extends.  It all depends on where the data is
>> coming from.  Without certainty, i.e. actually representing it properly,
>> you're designing a broken ABI.
>>
>> What you wrote above re T_F_V not being able to tell register or
>> memory doesn't make sense.  Did you really mean inside 
>> TARGET_PROMOTE_FUNCTION_MODE?
>> And why exactly wouldn't you be able to tell there?  Can you not find out
>> via a call to ix86_return_in_memory?
>>
>
> TARGET_PROMOTE_FUNCTION_MODE is for passing/returning
> value in a register and the documentation says that:
>
>    FOR_RETURN allows to distinguish the promotion of arguments and
>    return values.  If it is `1', a return value is being promoted and
>    `TARGET_FUNCTION_VALUE' must perform the same promotions done here.
>    If it is `2', the returned mode should be that of the register in
>    which an incoming parameter is copied, or the outgoing result is
>    computed; then the hook should return the same mode as
>    `promote_mode', though the signedness may be different.
>
>
> But for TARGET_FUNCTION_VALUE, there is no difference for
> register and memory.  That is why I don't promote when
> FOR_RETURN is 1.  mmix/mmix.c and rx/rx.c have similar
> treatment.
>

Reply via email to