  As software becomes larger, programming languages become higher-level, and
processors continue to fail to be clocked faster, we'll increasingly require
compilers to reduce code bloat, eliminate abstraction penalties, and exploit
interesting instruction sets. At the same time, compiler execution time must
not increase too much and also compilers should never produce the wrong output.
This paper examines the problem of making optimizing compilers faster, less
buggy, and more capable of generating high-quality output.
