Finally, I guess the one thing I can do is simply generate
pseudo_registers and copy all my registers into the pseudos before the
call I make.

Then I do my expand like I showed above.

And finally, move everything back.

Later passes will remove anything that was not needed, anything that
was will be kept. This could be a solution to the second issue but
I'll wait to understand what you meant first.

Jc

On Tue, Sep 1, 2009 at 6:35 PM, Jean Christophe
Beyler<jean.christophe.bey...@gmail.com> wrote:
> I don't think I quite understand what you're meaning. I want to use
> the standard ABI, basically I want to transform certain operations
> into function calls.
>
> In regard to what you said, do you mean I should build the tree before
> the expand pass, by writing a new pass that will work on the trees
> instead of rtx?
>
> Otherwise, I fail to see how that is different to what I'm already
> doing. Would you have an example?
>
> Thanks,
> Jc
>
> PS: Although when I look at what GCC generates at the expand stage, it
> really does seem that he first generates the calculation of the
> parameters in pseudo-registers and then moves them to the actual
> output registers. It's the next phases that will combine the two to
> save a move.
>
> On Tue, Sep 1, 2009 at 6:26 PM, Ian Lance Taylor<i...@google.com> wrote:
>> Jean Christophe Beyler <jean.christophe.bey...@gmail.com> writes:
>>
>>> First off: does this seem correct?
>>
>> Awkward though it is, it may be more reliable to build a small tree here
>> and pass it to expand_call.  This assumes that you want to use the
>> standard ABI when calling this function.
>>
>> Then your second issue would go away.
>>
>> Ian
>>
>

Reply via email to