[LLVMdev] Adding custom pragma's for generating particular LLVM IR
Julien Peeters
contact at julienpeeters.net
Fri Apr 19 23:43:22 PDT 2013
Hi ML readers,
I would first apology if this was already addressed on this ML, but I
didn't find information on this topic.
I would like to add custom pragma's that generate particular LLVM IR.
Here is an example:
int a, b;
/* ... */
#pragma mypragma shared(a, b)
{
a = b;
b++;
}
would result in this (pseudo) LLVM IR:
%1 alloca i32
%2 alloca i32
...
call void @start_callback ()
%3 call i32 @check_callback ( i32 %1 )
%4 call i32 @check_callback ( i32 %2 )
...
call void @end_callback ()
...
Note: All *_callback functions are implemented in a third party library.
I guess that is it quite close to what was implemented for the OpenMP
support, but I need something simpler.
Basically, how can I
- Add a pragma that identifies a block (i.e. scope) of code ?
- Add an action that flag some variables as __shared__ in the annotated
block ?
- Generate LLVM IR that add specific call-backs at the start and end of
the block and on shared variables ?
I hope my explanation is sufficiently clear. Feel free to ask questions
if it's not.
Best regards,
Julien.
More information about the llvm-dev
mailing list