[][src]Crate llir

LLVM IR Binding for Rust

This LLVM IR Binding provides intuitive and well-organized safe Rust API for analyzing existing LLVM modules. Thus the whole library is thread-safe. This crate does not provide the functionality to produce new LLVM module or change existing module.

Getting started

use llir;

// Create context
let context = llir::Context::create();

// Specify path to the byte code
let path = Path::new("path/to/your/llvm/bytecode.bc");

// Load the module with that path
let module = context.load_module(path)?;

// Iterate through functions, blocks, and instructions...
for func in module.iter_functions() {
  for block in func.iter_blocks() {
    for instr in block.iter_instructions() {
      // Do things to instr...
    }
  }
}

Other than context and module, the crate mainly consists of LLVM values and types. Checkout each submodule for more information.

Modules

types

LLVM Types

values

LLVM Values

Structs

Context

LLVM Context

Module

LLVM Module