Skip to content

Latest commit

 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PointerFlow

PointerFlow is a high-performance pointer analysis framework designed for LLVM programs. It leverages Intel AVX2 vector extensions for efficient bitset operations and incorporates advanced optimizations to compute WPA (whole-program aliasing).

Final project for my Computer Organisation II course, MSc Computer Science @ UBA.

Details

Contains:

  • Four implementations of a bitset: bitset_scalar, sparse_bitset_scalar and sparse_bitset_avx2 (plus variants of optimized ASM code with a slightly different memory layout.).
  • Two implementations of Andersen's algorithm: naive, complete (following Hardekopf's 2007 paper, but with some wavefront behaviour and extra graph optimizations)
  • Compact test suite for validating core functionality
  • Benchmark suite for measuring performance of each implementation against each other.
  • translator of C code to a format suitable for Andersen's constraints in the program
    • (Does not properly solve any complex obscure pointer LLVM magic).

Requirements

Builds

Build the program

make main

You can then find it on build/bin/pointerflow_runner (Requires LLVM)

runs tests and builds benchmarks

make

Run tests

make check

Run benchmarks

make run_bench

If you see this warning when building:

***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.

Run:

sudo cpupower frequency-set --governor performance

About

A pointer analysis PoC algorithm impl for LLVM programs

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages