 In order to issue a given snippet of RTL, it must match one (or more) of the RTL patterns in the machine description file, and satisfy the constraints for that pattern; otherwise, it would be impossible to convert the final RTL into machine code.Towards the end of compilation, valid RTL is reduced to a "strict" form in which each instruction refers to real machine registers and a pattern from the target's machine description file.Forming strict RTL is a complicated task; an important step is register allocation, where real hardware registers are chosen to replace the initially assigned pseudo-registers.