In this chapter, we will cover the following recipes:
Various levels of optimization
Writing your own LLVM pass
Running your own pass with the opt tool
Using another pass in a new pass
Registering a pass with pass manager
Writing an analysis pass
Writing an alias analysis pass
Using other analysis passes