A library for analyzing and transforming LLVM (3.5) assembly codes.
A pure Haskell library for analyzing and transforming LLVM assembly codes. It includes: 1) a parser to parse LLVM code in its text form; 2) an internal IR that is designed for Hoopl and direct composition; 3) a set of utility functions to convert LLVM AST to and from the internal IR; 4) a set of utility functions to query the IR.
hLLVM -- A Haskell Library for analyzing and transforming LLVM assembly codes
Goal:
- Provide functionalities for performaning analysis and transformation of LLVM codes in pure Haskell
Build:
From hLLVM toplevel directory
cabal configure
cabal build
The test driver 'llvm-test' is generated at dist/build/llvm-test
Test:
test LLVM assembly parser
dist/build/llvm-test/llvm-test parse -i test/test1.ll -o out.ll
test mem2reg pass
dist/build/llvm-test/llvm-test pass -s=mem2reg -f=10000 -i test/test1.ll -o out.ll
test dce pass
dist/build/llvm-test/llvm-test pass -s=dce -f=10000 -i test/test1.ll -o out.ll
test mem2reg and dce passes
dist/build/llvm-test/llvm-test pass -s=mem2reg -s=dce -f=1000 -i test/test1.ll -o out.ll
run tests in batch (llvm-test needs to be available in the executable search paths)
test/runLlvmTest.sh [parse|ast2ir|ir2ast] <directory of llvm-3.5 test cases>