Efficient Path Profiling using LLVM
- LLVM 5.0
- gcc-5+
mkdir build && cd buildcmake -DCMAKE_BUILD_TYPE=Release .. && make -j 8sudo make install
To run the tests, install lit from the python package index.
pip install litcd buildlit test
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.
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
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.
- Re-enable optimal event counting
- Add benchmarking hooks
- Add unit tests
The MIT License