Similar to the LLVM IR FunctionBlock
class, a MachineFunction
class contains a series of MachineBasicBlocks
classes. These MachineFunction
classes map to LLVM IR functions that are given as input to the instruction selector. In addition to a list of basic blocks, the MachineFunction
class contains the MachineConstantPool
, MachineFrameInfo
, MachineFunctionInfo
, and MachineRegisterInfo
classes.
Many functions are defined in the MachineFunction
class, which does specific tasks. There are also many class member objects that keep information, such as the following:
RegInfo
keeps information about each register that is in use in the function:MachineRegisterInfo *RegInfo;
MachineFrameInfo
keeps track of objects allocated on the stack:MachineFrameInfo *FrameInfo;
ConstantPool
keeps track of constants that have been spilled to the memory:MachineConstantPool *ConstantPool;
JumpTableInfo
keeps track of jump tables for switch instructions:MachineJumpTableInfo...