Skip to content

snehasish/llvm-epp

This branch is 10 commits ahead of sfu-arch/llvm-epp:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Snehasish Kumar
Dec 21, 2017
5d3fb90 · Dec 21, 2017
Mar 9, 2017
Dec 21, 2017
Dec 21, 2017
Dec 14, 2017
Dec 21, 2017
Sep 29, 2016
Feb 10, 2017
Dec 14, 2017
Oct 25, 2017
Dec 21, 2017
Mar 9, 2017
Feb 9, 2017
Dec 15, 2017

Repository files navigation

Build Status

llvm-epp

Efficient Path Profiling using LLVM

Requires

  1. LLVM 5.0
  2. gcc-5+

Build

  1. mkdir build && cd build
  2. cmake -DCMAKE_BUILD_TYPE=Release .. && make -j 8
  3. sudo make install

Test

To run the tests, install lit from the python package index.

  1. pip install lit
  2. cd build
  3. lit test

Documentation

To generate documentation, install graphviz and doxygen. Running cmake with these prerequisites will enable the doc target for the build system. Running make doc will generate html documentation of the classes.

Usage

clang -c -g -emit-llvm prog.c \
&& llvm-epp prog.bc -o path-profile.txt \
&& clang prog.epp.bc -o exe -lepp-rt \
&& ./exe \
&& llvm-epp -p=path-profile.txt prog.bc 

Known Issues

  1. Instrumentation cannot be placed along computed indirect branch target edges. This blog post describes the issue under the section "How does this extension interact with critical edge splitting?". LLVM can now split indirect jump edges. I have not tested this yet.

Roadmap

  1. Re-enable optimal event counting
  2. Add benchmarking hooks
  3. Add unit tests

License

The MIT License

About

Efficient Path Profiling using LLVM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 53.7%
  • Python 30.7%
  • C 10.7%
  • CMake 4.9%