In this project you will gain hands-on experience using the LLVM Compiler Infrastructure to write dynamic and static program analyses analyses. This project is broken into 2 parts. The first is a fairly structured project to get you familiar with the high-level organization and data structures you will need to understand to implement LLVM analyses. The second part is an open-ended assignment in which you will have to make your own design decisions to implement a generic dataflow analysis framework and several client analyses.