The Machine pass pipeline at a glance
The pass pipeline of a backend is handled by a specialized version of the TargetPassConfig
class. This class should be familiar to you because you learned how to specialize and instantiate it for your backend in Chapter 9.
By default, the pass pipeline produced by the TargetPassConfig
class looks like what’s depicted in Figure 13.1:

Figure 13.1: The default Machine pass pipeline
On the left, in rounded rectangles, you can see the main passes that are used in a backend to lower an input LLVM IR to machine code (MC). On each arrow, each backend can inject more passes, both generic and target-specific.
The middle column of this figure shows the names of the different lowering phases. In the next section, you’ll see how they map to the application binary interfaces (APIs) of the TargetConfigPass
class.
Finally, the right column shows the expected properties of the IR that will be manipulated by the passes at...