|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| | llvm-svn: 45367 | 
| | 
| 
| 
| | llvm-svn: 45335 | 
| | 
| 
| 
| 
| 
| | to exceptions rather than variants for error handling in Ocaml.
llvm-svn: 45226 | 
| | 
| 
| 
| 
| 
| | for Ocaml-based compilers targeting embedded devices. :)
llvm-svn: 45096 | 
| | 
| 
| 
| | llvm-svn: 44899 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Thompson. Usage should be something like this:
open Llvm
open Llvm_bitreader
match read_bitcode_file fn with
  | Bitreader_failure msg ->
      prerr_endline msg
  | Bitreader_success m -> 
      ...;
      dispose_module m
Compile with: ocamlc llvm.cma llvm_bitreader.cma
              ocamlopt llvm.cmxa llvm_bitreader.cmxa
llvm-svn: 44824 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | methods are new to Function:
  bool hasCollector() const;
  const std::string &getCollector() const;
  void setCollector(const std::string &);
  void clearCollector();
The assembly representation is as such:
  define void @f() gc "shadow-stack" { ...
The implementation uses an on-the-side table to map Functions to 
collector names, such that there is no overhead. A StringPool is 
further used to unique collector names, which are extremely
likely to be unique per process.
llvm-svn: 44769 | 
| | 
| 
| 
| | llvm-svn: 42760 | 
| | 
| 
| 
| 
| 
| 
| | the Objective Caml 'declare_*' functions to behave more or less like
getOrInsertFunction.
llvm-svn: 42740 | 
| | 
| 
| 
| | llvm-svn: 42736 | 
| | 
| 
| 
| | llvm-svn: 42713 | 
| | 
| 
| 
| | llvm-svn: 42707 | 
| | 
| 
| 
| | llvm-svn: 42698 | 
| | 
| 
| 
| | llvm-svn: 42697 | 
| | 
| 
| 
| | llvm-svn: 42696 | 
| | 
| 
| 
| | llvm-svn: 42668 | 
| | 
| 
| 
| 
| 
| | bindings headers themselves, hidden behind #ifdef __cplusplus.
llvm-svn: 42666 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | instruction creation. No support yet for instruction introspection.
Also eliminated allocas from the Ocaml bindings for portability,
and avoided unnecessary casts.
llvm-svn: 42367 | 
| | 
| 
| 
| | llvm-svn: 42101 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | - The naming prefix is LLVM.
- All types are represented using opaque references.
- Functions are not named LLVM{Type}{Method}; the names became
  unreadable goop. Instead, they are named LLVM{ImperativeSentence}.
- Where an attribute only appears once in the class hierarchy (e.g.,
  linkage only applies to values; parameter types only apply to
  function types), the class is omitted from identifiers for
  brevity. Tastes like methods.
- Strings are C strings or string/length tuples on a case-by-case
  basis.
- APIs which give the caller ownership of an object are not mapped
  (removeFromParent, certain constructor overloads). This keeps
  keep memory management as simple as possible.
For each library with bindings:
  llvm-c/<LIB>.h       - Declares the bindings.
  lib/<LIB>/<LIB>.cpp  - Implements the bindings.
So just link with the library of your choice and use the C header
instead of the C++ one.
llvm-svn: 42077 | 
|  | llvm-svn: 32966 |