14.21.4 RTL SSA Resources

The RTL SSA form tracks two types of “resource”: registers and memory. Each hard and pseudo register is a separate resource. Memory is a single unified resource, like it is in GIMPLE (see GIMPLE).

Each resource has a unique identifier. The unique identifier for a register is simply its register number. The unique identifier for memory is a special register number called MEM_REGNO.

Since resource numbers so closely match register numbers, it is sometimes convenient to refer to them simply as register numbers, or “regnos” for short. However, the RTL SSA form also provides an abstraction of resources in the form of rtl_ssa::resource_info. This is a lightweight class that records both the regno of a resource and the machine_mode that the resource has (see Machine Modes). It has functions for testing whether a resource is a register or memory. In principle it could be extended to other kinds of resource in future.