[LLVMdev] llvm ocaml bindings
gordonhenriksen at me.com
Wed Dec 31 08:32:16 CST 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.
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
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
More information about the LLVMdev