This document discusses adding a new pass to the BOLT binary optimizer. It begins with an overview of the BOLT pipeline and intermediate representation. It then provides an example of adding a simple peephole optimization rule. The document outlines various techniques for debugging and testing new passes, such as triaging crashes with a bisection script, printing analysis results, and dumping functions to files. It concludes with notes on implementing a new pass by inheriting from the BinaryFunctionPass class and integrating it into the pass manager to run on whole programs in parallel.