Target-independent code generation: legalization, instruction selection, register allocation, scheduling, and emission.