This project partially fulfills the requirements for the EECS 583 Compilers course at the University of Michigan.
- LLVM Installation - see Step 1 in Setup.
- Packages required by
get_statistics.sh
- tr
- sed
- Install LLVM on your machine. Then, clone this repository to your machine.
- Inside the newly cloned git repo, create a build directory, generate the Makefile, and make the project.
$ mkdir build && cd build $ cmake .. $ make
- Navigate to the
benchmarks
folder, and use theget_statistics.sh
script to do profiling on any C file with and without ISPRE. You can view documentation for the script by running./get_statistics.sh -h
. Example:$ ./get_statistics.sh -d hw1correct1
- Three different optimization types to eventually compare
- O0 optimization
- O0 optimization plus gvn pass
- O0 optimization plus our custom ISPRE pass
This project is inspired and informed by the following paper - a big thank you to the authors.
Horspool, R.N., Pereira, D.J. and Scholz, B. (2006) “Fast profile-based partial redundancy elimination,” Lecture Notes in Computer Science, pp. 362–376. Available at: https://doi.org/10.1007/11860990_22.