Adapting a Pass for use with the old Pass manager
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:
- The new class needs to derive from the...