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 >> >