The patterns of an individual RTL instruction describe which registers are inputs to that instruction and which registers are outputs from that instruction. However, it is often useful to know where the definition of a register input comes from and where the result of a register output is used. One way of obtaining this information is to use the RTL SSA form, which provides a Static Single Assignment representation of the RTL instructions.
The RTL SSA code is located in the rtl-ssa subdirectory of the GCC source tree. This section only gives a brief overview of it; please see the comments in the source code for more details.
• Using RTL SSA: | What a pass needs to do to use the RTL SSA form | |
• RTL SSA Instructions: | How instructions are represented and organized | |
• RTL SSA Basic Blocks: | How instructions are grouped into blocks | |
• RTL SSA Resources: | How registers and memory are represented | |
• RTL SSA Accesses: | How register and memory accesses are represented | |
• RTL SSA Phi Nodes: | How multiple sources are combined into one | |
• RTL SSA Access Lists: | How accesses are chained together | |
• Changing RTL Instructions: | How to use the RTL SSA framework to change insns |