-
Book Overview & Buying
-
Table Of Contents
Learn LLVM 12
By :
The future belongs to the new Pass manager, and it makes no sense to develop a new Pass for the old Pass manager exclusively. However, during the ongoing transition phase, it would be useful if a Pass could work with both Pass managers, as most of the Passes in LLVM already do.
The old Pass manager requires a Pass that has been derived from certain base classes. For example, a function Pass must derive from the FunctionPass base class. There are more differences, too. The method run by the Pass manager is named runOnFunction(), and an ID for the Pass must also be provided. The strategy we follow here is to create a separate class that we can use with the old Pass manager and refactor the source code in a way that the functionality can be used with both Pass managers.
We use the Pass plugin as a base. In the include/CountIR.h header file, we add a new class definition, as follows: