Skip to content

Create an LLVM pass that uses apron for numerical analysis

Notifications You must be signed in to change notification settings

omeranson/llvm_apron_pass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inttroduction

An LLVM compiler pass, which uses apron to infer numeric properties about functions.

#Installation

  • Install apron.
  • Install llvm. Tested with llvm version 3.4.2.

Verify the paths in the Makefiles are correct. Specifically, verify that APRON_INSTALL and LLVM_INSTALL are point to the installation folders of apron and llvm respectively, in all Makefiles.

Usage

The Makefile in the Examples folder provides utilities to compile LLVM bitconde, textual output, and apron outputs.

  • To create llvm bitcode: make .bc
  • To create textual representation of llvm bitcode: make .ll
  • To create apron output: make .apron APRON_MANAGER=

Note that .c is the source c file. is the APRON manager to use. Currently, the following are supported:

  • box
  • ap_ppl
  • oct
  • polka

Others can be added in the adaptors folder.

You may need to source environment.sh for things to work: source environment.sh

The output format hasn't been decided upon. It changes on the whim of what we're looking for at a given moment.

Folder Structure

The folder structure is as follows:

  • ApronPass - The actual code for the LLVM apron pas
    • ApronPass/include - Include files containing the public API
    • ApronPass/src - The actual code for the LLVM apron pas
      • ApronPass/src/Value.cpp - Code for handling specific llvm instructions
      • ApronPass/src/BasicBlocks.cpp - Code for processing basic blocks. Each basic block has exactly one abstract value.
      • ApronPass/src/Callgraph.cpp - Code containing callgraph.
    • ApronPass/adaptors - Implementations of create_manager, which selects which manager, and therefore which APRON algorithm, is used
  • Examples - Some example c programmes, and code to analyse them.

References

About

Create an LLVM pass that uses apron for numerical analysis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages