[LLVMdev] llvm ocaml bindings

Gordon Henriksen gordonhenriksen at me.com
Wed Dec 31 06:32:16 PST 2008


On 2008-12-30, at 21:07, Ranjit Jhala wrote:

> thanks Chris and Gordon for the fantasic infrastructure and ocaml
> bindings and Erick for the prompt response!
>
> I'm looking to use LLVM to write program analyses for
> C/C++ programs, but to use Ocaml to write the analyses.
> I did see there were bindings for iterating over:
>
> * functions    in a module	[iter_functions]
> * basic blocks in a functions	[iter_blocks]
> * instructions in a block	[iter_instrs]
>
> The other things that i'd like are to know what kind of
> instruction a given instruction was.

Hi Ranjit,

There are recently aded C bindings for the "isa<>" template (actually,  
dyn_cast_or_null<>), which is usually the preferred manner to access  
the type ID. There are no corresponding ocaml bindings yet. I think  
this is the most important missing feature for what you've described;  
most of the instruction properties have getters and setters.

Re exposing the type ID as an Ocaml variant type, consider that there  
is no type ID for Instruction, since it is abstract; matching an  
instruction would therefore be extremely inconvenient, and would be  
brittle with respect to additions or changes to the Value class  
hierarchy.

> llinstr


Adding Ocaml types for each llvm::Value class seems inadvisable to me.  
You can certainly try it, but I expect the result would be unusably  
cumbersome.

— Gordon





More information about the llvm-dev mailing list