[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL

Duncan Sands baldrick at free.fr
Sat Oct 20 00:58:03 PDT 2012


Hi Rafael,

On 19/10/12 18:27, Rafael EspĂ­ndola wrote:
>> Don't get me wrong, I don't have any good ideas about how to do this, I'm
>> just hoping someone does. End result might allow something like:
>>
>> declare void @foo(double inreg <eax,edx> %x)
>
> Not sure I would go all the way to specifying registers in the IL
> (although I liked it at some point). What I like most right now is
> something along the lines of
> http://llvm.org/pr12193. That makes it explicit if something is on the
> stack or in registers and that information is correct for both the
> caller and callee. What is left for codegen is counting the  register
> arguments and computing stack offsets.

I'm 100% in favour of having "onstack" as a complement to "inreg".  I'm
not so happy about the more funky changes you suggested in the PR, namely
having the callee no longer match the caller, but "onstack" itself makes
a lot of sense to me.

> Implementing that requires way more time than I have right now, but I
> think this proposal is a small step in the right direction as it makes
> clang the one responsible for marking an argument as memory or
> register.

Ciao, Duncan.




More information about the llvm-dev mailing list