As we saw in Chapter 2, the main limitation of most instruction selectors based on macro expansion is that the scope of expansion is restricted to a single AST or IR node. Hence exploitation of many instructions is excluded, resulting in low code quality. Another problem is that macro-expanding instruction selectors typically combine pattern matching and pattern selection into a single step, thus making it very difficult to consider combinations of instructions and then pick the one that yields the "best" assembly code. These problems can be solved by employing another principle of instruction selection called tree covering, which is also the most common principle of techniques found in the current literature.
Unable to display preview. Download preview PDF.