[cfe-dev] Custom calling conventions in C code

Chris Lattner clattner at apple.com
Thu Jul 10 12:56:29 PDT 2008


On Jul 10, 2008, at 12:19 PM, Matthijs Kooijman wrote:

>> or whatever.  The best way to do this is to have __interrupt__ be a
>> target-specific #define for __attribute__((interrupt)) and then  
>> have your
>> target handle the interrupt attribute however you want.
>
>> Yep, supporting specific calling conventions is fine, I just don't  
>> want
>> something like:
>>
>> __attribute__((callingconv(47)))
>
> Okay, sounds reasonable. However, is there any generic way to do  
> this in
> clang, or will I end up locally patching clang for this?
>
> If the latter is the case, might function annotation be an  
> alternative?
> Currently, I can specify __attribute__((annotate("foo"))) for global
> variables, but not for functions (both in clang and gcc). I'm not  
> sure where
> this limitation comes from, but enabling generic annotation for  
> functions
> should also work for me (I can simply add a frontend pass that  
> translates
> those annotations into calling conventions for my backend, or leave  
> them as
> annotions even).

You could use attr(annotate).  I think attributes in general can only  
be put on function forward declarations, not definitions.

-Chris



More information about the cfe-dev mailing list