Goal
The main goal of llvmcpy is to provide Python bindings for the LLVM project that are fast and require the lowest possible maintainance effort. To achive this, we use CFFI to parse the (slightly adapted) header files for the LLVM-C API and automatically generate a set of classes and functions to interact with them in a Pythonic way.
This project is in an early stage, but allows you to run the following code:
import sys
from llvmcpy.llvm import *
buffer = create_memory_buffer_with_contents_of_file(sys.argv[1])
context = get_global_context()
module = context.parse_ir(buffer)
for function in module.iter_functions():
for bb in function.iter_basic_blocks():
for instruction in bb.iter_instructions():
instruction.dump()
It has been tested with LLVM 3.4, 3.8 and 3.9. Supporting older and newer versions of the LLVM-C API should be basical