Used "hoisting". User has to declare variables he will use in its
instruction list before defining it.
Able to write factorial function.
No type checking but types are implicit now. (Lighter syntax)
First draft for typed LLVM IR based on GADTS. Few types, and may be to restrictive.
Llvmocp.{IR,Printer} not opened at the beginning of file anymore.
Used {IR,Printer} prefix.
Implemented every icmp and ibinop operations on integers.
Float comparisons / binary operations implemented.
Added br1 instruction.
Added phi instruction.
alloca / store / load instructions added.
From gadt to polymorphic variants.
Added `Vector type, module signature moved to a .mli file.
Some function signatures are still missing (e.g. floating point op).
/!\ this commit do not compile. `lltype` function does not type check /!\
Updated with new instr type of Llvmocp.IR
Fixed type conflicts (mainly: coercion when using lltype function).
Added `Vector type.
Splitted module into Type, Value, Instr, Block and Env modules.
Type used to define icmp signature (factorization).
Added missing comparison operators.
Same for integer operations.
Added int vector comparisons: same functions as int comparison, with 'v'
as prefix.
Added `ignore` function for instruction used for side effect (no assignement).
Fixed type error in demo.ml (alloca instr).
float_t : half, float and double.
Implemented fcmp.
Binary operations on float does not compile.
type `any_type` and `'a ident` defined.
Removed some useless coercions.
Added `switch` function
Block manipulation slightly improved:
Defined block type and used it in function definition.